- 19.01 정리한 내용
spring data JPA 특징
1. 관계 맵핑
2. 엔티티 상태와 cascade 옵션
- Study entity의 상태가 A에서 B로 변할 때 Account entity의 상태도 A에서 B로 변하게 하고 싶다면
- cascade = CascadeType.ALL 옵션을 줘야 한다.
- 여기서 상태란 transient, persistent, detached, removed
3. entity의 status 변화
- save(영속화)를 먼저 하고 나중에 값을 변경해도 된다. 마지막 트랜잭션 커밋하는 시점에 디비에 데이터가 가므로
- presistent와 detached 상태 전환 효과를 누리려면, 그 객체 값을 먼저 save(영속화)를 시켜줘야 한다.
- detached 상태에서 persistent 상태로 전환되려면, 그 객체 값을 먼저 save(영속화)를 시켜줘야 한다.
4. parent와 child 관계
- 한 entity가 삭제가 될 때, 다른 entity가 같이 삭제가 되어야 하거나, 업데이트, 등 상태의 변화가 같이 일어나야 할 때, 부모 자식 관계라고 한다.
5. 1차 캐시, 더티 체킹, write behind
- 한 트랜잭션이 끝나며 커밋할 때 변경 사항을 적용해주는 것.
6. Fetch 모드
- 연관 관계의 엔티티를 어떻게 가져올 것이냐... 지금 (Eager)? 나중에(Lazy)?
6.1 @OneToMany의 기본값은 Lazy
- 데이터가 현재 필요한지 알 수 없으므로 진짜 필요할 때 데이터를 가져온다.
6.2 @ManyToOne의 기본값은 Eager
- 연관된 모든 객체를 한 번에 가져옴
7. spring data JPA 원리
- spring framework의 코드를 최대한 노출시키지 않겠다는 것이 springsource 팀의 철학
- entityManager 주입받는 대신 JpaRepository를 주입받아 사용.
- 그러므로 test 코드를 작성할 때 JpaRepository를 상속받은 repository 혹은 service를 통해 test를 실행할 것.
8. connection pool
- hikariCP는 스프링 부트 2.0부터 default JDBC connection pool이다.
DBCP(DataBaseConnectionPool)
- connection을 만드는 과정이 많은 resources를 사용한다.
- 그래서 DBCP가 application 성능에 아주 핵심적 역할을 한다.
- connection 객체를 몇 개를 유지할 것인지를 정해야 한다.
References
http://arahansa.github.io/docs_spring/jpa.html#jpa.query-methods
: JPA
http://www.querydsl.com/static/querydsl/3.6.3/reference/ko-KR/html_single/
: QueryDSL
'JPA' 카테고리의 다른 글
| 1차 캐시와 2차 캐시 (0) | 2022.05.23 |
|---|