본문 바로가기
공부일기/JPA

JPA 공부일기(10)

by 고다나 2023. 2. 9.
[자바 ORM 표준 JPA 프로그래밍 - 기본편]
섹션 8.프록시와 연관관계 정리- 즉시로딩과 지연로딩 ~ 실전예제5. 연관관계 관리

 

즉시로딩과 지연로딩

 

- 지연로딩: fetch=FetchType.LAZY를 사용해 프록시로 조회. 실제 객체를 사용하는 시점에 DB를 조회해서 초기화.

- 즉시로딩: fetch=FetchType.EAGER를 사용해 한번에 조회. 

 

- 실무에서 지연로딩만 사용해야 함. 즉시로딩은 예상하지 못한 sql 발생(JPQL에서 N+1 문제 발생).

- @ManyToOne, @OneToOne은 기본이 즉시 로딩이므로 LAZY로 설정(@OneToMany, @ManyToMany는 기본이 지연로딩).

 

 

영속성 전이 (cascade=CascadeType.종류)

- 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용.

- 연관관계 매핑과 아무 관련X. 참조하는 곳이 하나일 때만 사용해야함.

-종류: ALL, PERSIST, REMOVE, MERGE, REFRESH,DETACH(ALL,PERSIST정도만 실무에서 사용 권장)

 

 

고아객체(orphanRemoval=true)

- 부모 엔티티와 연관관계가 끊어진 자식엔티티를 자동으로 삭제.

- 참조하는 곳이 하나일 때 사용해야함.(특정 엔티티가 개인 소유할 때 사용)

- @OneToOne, @OneToMany만 가능.

- CascadeType.REMOVE처럼 동작.

 

*CascadeType.ALL+orphanRemoval=true 부모 엔티티를 통해서 자식의 생명 주기를 관리할 수 있음.

'공부일기 > JPA' 카테고리의 다른 글

JPA 공부일기(12)  (0) 2023.03.21
JPA 공부일기(11)  (0) 2023.03.20
JPA 공부일기(9)  (0) 2023.01.30
JPA공부일기(8)  (0) 2023.01.27
JPA공부일기(7)  (0) 2023.01.15

댓글