brieflo검색

THE BRIEFLO COLLECTION

JPA · Hibernate

연관관계 매핑, 영속성 컨텍스트, 성능 최적화.

전체 글 20편

최신순 · 1–12편

GOOD TO KNOW

자주 묻는 질문

연관관계의 주인은 무엇이고 어떻게 정하나요?

외래 키를 실제로 관리하는 쪽이 연관관계의 주인입니다. 다대일 관계에서는 외래 키를 가진 다(N) 쪽이 주인이 되며, 반대편에는 mappedBy를 지정합니다. 주인이 아닌 쪽에서 값을 바꿔도 DB에 반영되지 않습니다.

persist와 merge는 어떻게 다른가요?

persist는 새 엔티티를 영속 상태로 만들고 그 인스턴스 자체가 관리됩니다. merge는 준영속·비영속 엔티티의 값을 복사한 새로운 영속 인스턴스를 반환하므로, 넘긴 객체가 아니라 반환된 객체를 써야 합니다.

지연 로딩과 즉시 로딩 중 무엇을 써야 하나요?

기본은 지연 로딩입니다. 즉시 로딩은 예상하지 못한 조인과 N+1 쿼리를 만들기 쉽습니다. 함께 조회해야 하는 구간은 fetch join이나 엔티티 그래프로 그 시점에만 명시적으로 해결합니다.