-
[Spring] Entity 설계 시 연관관계의 주인을 설정하는 법Spring 2021. 11. 9. 18:39
연관관계의 주인은 단순히 외래 키를 누가 관리하냐의 문제이지 비즈니스상 우위에 있다고 주인으로 정하면 안된다.
예를 들어서 자동차와 바퀴가 있으면, 일대다 관계에서 항상 다(많은) 쪽에 외래 키가 있으므로 외래 키가 있는 바퀴를 연관관계의 주인으로 정하면 된다. 물론 자동차를 연관관계의 주인으로 정하는 것이 불가능 한 것은 아니지만, 자동차를 연관관계의 주인으로 정하면 자동차가 관리하지 않는 바퀴 테이블의 외래 키값이 업데이트 되므로 관리와 유지보수가 어렵고, 추가적으로 별도의 업데이트 쿼리가 발생하는 성능 문제도 있다.
연관관계의 주인이 아닌 곳은 읽기만 가능하며, 주인은 mappedBy 속성사용을 하지 않으며, 주인이 아니면 mappedBy 속성으로 주인을 지정한다.
단방향 매핑만으로도 이미 연관관계 매핑은 완료가 된다.
양방향 매핑은 반대방향으로 조회(객체 그래프 탐색)기능이 추가된 것 뿐이다.
JPQL에서 역방향으로 탐색할 일이 많다.
단방향 매핑을 잘하고 양방향은 필요할 때 추가해도 늦지 않다.(테이블에 영향을 주지 않음)
출쳐 : 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 학습 페이지 (inflearn.com)
'Spring' 카테고리의 다른 글
[Spring] 값 타입 Entity 클래스를 불변하게 설계하는 방법 (0) 2021.11.09 [Spring] 실무에서 가급적 Entity 클래스에 Setter 사용을 자제해야 하는 이유 (0) 2021.11.09 [Spring] spring boot entity에 enum 사용시 주의사항 (0) 2021.11.09 [Spring] 쿼리문 콘솔창에서 쉽게 확인하는 법 (0) 2021.11.08 [Spring] 웹 스코프와 request (0) 2021.11.04