문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
springframework:spring_data_jdbc [2022/01/21 21:57] kwon37xi [EntityCallback] |
springframework:spring_data_jdbc [2023/09/15 19:50] (현재) kwon37xi |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Spring Data JDBC ====== | ====== Spring Data JDBC ====== | ||
* [[https:// | * [[https:// | ||
+ | * https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[springframework: | ||
+ | ===== 가장 큰 특징 ===== | ||
+ | * Entity 가 proxy 객체가 아닌 POJO 이기 때문에, proxy 일 때 발생하는 숨은 동작들이 발생하지 않는다. | ||
+ | * 이 특징을 잘 활용하면 side effect 없이 다양한 시도를 할 수 있다. | ||
===== JdbcAggregateTemplate ===== | ===== JdbcAggregateTemplate ===== | ||
- | * [[https:// | + | * [[https:// |
* SpringDataJdbc 가 내부적으로 사용하는 DB 제어 template | * SpringDataJdbc 가 내부적으로 사용하는 DB 제어 template | ||
* 직접 주입 받아서 사용가능하다. | * 직접 주입 받아서 사용가능하다. | ||
줄 17: | 줄 22: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
- | * [[https:// | + | * [[https:// |
- | * [[https:// | + | * [[https:// |
+ | |||
+ | ===== Bidirectional Relationship ===== | ||
+ | ==== internal ==== | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * DB 데이터를 읽을 때 생성자에서 '' | ||
+ | |||
+ | ==== external ==== | ||
+ | * 이런 방법 보다는 그냥 [[https:// | ||
+ | |||
+ | |||
+ | ===== Caching ===== | ||
+ | * Spring Data JDBC는 Cache를 지원하지 않는다. | ||
+ | * 필요하다면 [[springframework: | ||
+ | |||
+ | ===== Eager Loading ===== | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * 어차피 조회한 엔티티가 proxy가 아니라서 별다른 side effect 없이 View 객체 사용가능. | ||
+ | |||
+ | <code java> | ||
+ | class MinionView extends Minion { | ||
+ | MinionView(String name, AggregateReference< | ||
+ | super(name, evilMaster); | ||
+ | } | ||
+ | |||
+ | @Embedded(onEmpty = Embedded.OnEmpty.USE_EMPTY, | ||
+ | Person master; | ||
+ | } | ||
+ | |||
+ | // join 해서 MinionView에 값을 넣는 Repository 쿼리 | ||
+ | @Query(" | ||
+ | " | ||
+ | "from minion m join person p on p.id = m.evil_master" | ||
+ | List< | ||
+ | </ | ||
+ | |||
===== 참조 ===== | ===== 참조 ===== | ||
* [[https:// | * [[https:// | ||
줄 32: | 줄 75: | ||
* https:// | * https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * 2022현재 multiple datasource 지정 안됨 | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |