본문 바로가기

Fetch2

자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (8-2) 프록시와 연관관계 관리 자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (8-2) 프록시와 연관관계 관리 들어가며 8강은 1편과 2편으로 나눠 진행하였다. 8.3 지연 로딩 활용 연관된 관계 끼리 자주 함께 사용 -> 즉시 로딩 설정 가끔 사용 -> 지연 로딩 설정 8.3.1 프록시와 컬렉션 래퍼 지연 로딩 설정 시 실제 엔티티 대신 프록시 객체를 사용하며, 프록시 객체는 실제 자신이 사용될 때까지 데이터베이스를 조회하지 않음 하이버네이트는 엔티티를 영속 상태로 만들 때 엔티티에 컬렉션이 있으면 컬렉션을 추적하고 관리할 목적으로 원본 컬렉션을 하이버네이트가 제공하는 내장 컬렉션으로 변경하는데 이것을 컬렉션 래퍼라 함. (출력 결과를 보면 org.hibernate.collection.internal.PersistentBa.. 2022. 9. 10.
JPA - N+1 문제와 해결방법 정리 들어가며 JPA를 사용하다 보면 N+1 문제를 한번씩은 겪어봤을것이다. 하지만 콘솔창을 자세히 보지 않았다면 그냥 지나쳤을 수도 있다. N+1의 문제가 발생한다고 해서 결과에 문제가 생기는 것은 아니지만 성능에는 문제가 생길 수 있기 때문에 확실히 인지해서 문제를 해결하는 것이 좋다. N+1 문제란 무엇인가? 연관관계가 설정된 엔티티를 조회할 때 조회 된 데이터의 갯수만큼 조회 쿼리가 추가로 발생하는 경우는 말한다. 이해를 돕기 위해 예를 들면 팀과 회원의 연관관계에서 팀을 조회했을때 팀에 속한 회원이 10명 있다고 가정할때 팀을 조회할때 연관관계를 가지고 있는 회원을 조회하는 쿼리가 10번(n번) 발생하는 것을 의미한다. N+1 == 10번(회원) + 1번(팀) Fetch 모드에 따른 결과 (즉시 로딩.. 2022. 8. 9.