[Spring] JPA, 연관관계 편의 메서드 🤔
연관관계 편의 메서드
연관관계 편의 메서드: 양방향 연관관계를 한 번에 설정하는 편리한 메서드
엔티티 A와 B가 서로 양방향 연관관계인데, 어디에 연관관계 편의 메서드를 두는 게 좋은가?
3가지 선택지가 있습니다.
-
엔티티 A에 둔다.
-
엔티티 B에 둔다.
-
엔티티 A,B에 둘 다 둔다.
둘 다 두는 것은 혼란을 가중하기 때문에 제외하고, A, B 중 하나를 선택해서 사용하는 것이 좋다.
그러면 여기서 A, B 중에 하나를 선택해야 하는데 사실 이 부분은 정답이 없다.
이 부분은 JPA의 영역이라기보다는 오히려 객체지향 설계의 영역이기 때문이다.
예를 들어, Order와 Delivery 중에서 우리 팀의 핵심 비즈니스가 주문이라면 Order에 연관관계 편의 메서드를 두는 것이 더 나은 선택일 확률이 높다.
그런데 만약 우리 팀이 배달을 책임지는 팀이고 Order 엔티티는 있지만, 관련된 정보는 크게 의미가 없다면 Delivery를 중심으로 비즈니스 로직이 진행되므로, Delivery가 중심 엔티티가 되기 때문에 Delivery에 연관관계 편의 메서드를 두는 것이 나은 선택이 된다.
예시
Team, 일
Member, 다
다대일 양방향 관계이며 연관관계 주인은 Member라고 가정하자,
public void setTeam(Team team) {
if (this.team != null) { // 기존에 이미 팀이 존재한다면
this.team.getMembers().remove(this); // 관계를 끊는다.
}
this.team = team;
team.getMembers().add(this);
}
위와 같은 메서드를 비즈니스 로직이 진행되는 중심 엔티티에 둔다.
Author And Source
이 문제에 관하여([Spring] JPA, 연관관계 편의 메서드 🤔), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@daydream/Spring-JPA-연관관계-편의-메서드저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)