본문 바로가기

JPA

JPA

- 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