JPA 의 연관관계의 주인 (Fetch Eager 전략과 Lazy 전략)

작성자 : 조회수 :

이번 포스트에는 연관관계에서 연관관계 주인과 Eager 전략, Lazy 전략을 알아보겠습니다.

 

아래 두개의 Entity(테이블)가 있습니다.

 

게시판 Entity와 댓글 Entity 입니다.



오늘 포스팅의 핵심 코드입니다.

 

JPA원래의 형식이라면

 

Id, Title, Content, count, user, yrepls …. 등등이 자바 객체에서 나와야 합니다.




YBoard 코드 대로라면 위 사진처럼 제1 정규화를 만족시키지 못합니다.

 

그래서 필요한 코드가


mappedBy 입니다. 이렇게 되면 



이 필드 값의 결과는 연관관계의 주인이 아니며 FK가 아니니, 테이블 생성시에 해당 코드에 따른 DB

LIST 반환 값을 넣지 마세요! 라는 의미입니다.


그럼 정상적으로 만들어진다면 어떻게 될까요?


바로 아래 사진처럼 될 것입니다.


이렇게 될 수 있던 것은 양방향 Mapping이였던 YRplyBoard에서 mappedby를 이용해서 연관관계의

 

주인이 아니라는 것을 명시해주었고


이렇게 Reply 테이블에도 지정해주었기 때문입니다.

 

또한 FetchType Lazy전략을 통해서 해당 값이 필요할 때만!

 

원하는 댓글 리스트 값을 OrderBy 정렬로 가져와 주는 것입니다.

 

참고로 JsonIgnoreProperties 어노테이션은 무한 참조를 막기위해 둔 어노테이션입니다.

]



이상입니다!