프록시 객체2 JPA를 활용한 연관관계 데이터 저장: getReferenceById()를 쓰는 이유 왜 findById() 대신 getReferenceById()를 쓰는가 Spring boot와 JPA를 통해 프로젝트를 진행하는 중, Banner 엔티티와 Comment 엔티티, Member 엔티티가 있고 Comment 엔티티가 Banner, Member 엔티티와 다대일 관계를 맺고 있다고 하자. Comment를 저장하기 위해서는 Banner, Member 엔티티를 가져와야 한다. @Entity@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)public class BannerComment { @Id @Column(name="banner_comment_id") @GeneratedValue(strategy = GenerationType... 2024. 7. 29. JPA - 프록시와 연관관계(즉시로딩, 지연로딩, N + 1 문제) 들어가기 JPA는 데이터 베이스에 있는 객체를 가져올 때 우선 영속성 컨텍스트에 가져오게 된다. 그렇다면 그 객체와 연관된 객체를 가져올 때 어떻게 가져오는가?경우는 두 가지가 있다.첫 번째는 그 연관된 객체도 미리 영속성 컨텍스트에 올려놓는 것이다. 이 방식을 즉시 로딩이라 한다.두 번째는 그 연관된 객체를 사용하는 시점에 가져오는 것이다. 이 방식을 지연 로딩이라 한다.이 글에서는 이러한 두 가지 로딩 방식에 대해서 '프록시 객체'와 함께 설명할 것이다. 영속성 컨텍스트에 대한 내용이 많이 나오는데, 이에 대한 것은 https://khdscor.tistory.com/110를 참고하길 바란다. 본론 지연 로딩을 이용하기 위해선 실제 객체 대신에 데이터 베이스 조회를 지연할 수 있는 가짜 객체가 필요.. 2021. 7. 19. 이전 1 다음