작성
·
237
0
안녕하세요 강의 잘 듣고 있습니다.
일대다 관계 조인에서 현업에서는 어떤 식으로 풀어가시는지 궁금해서 질문드립니다.
JPA 기본 강의에서 도메인 설계 시 단방향 맵핑 만으로도 전부 설계 가능하고 필요 시에만 양방향 연관 관계를 설정한다고 하셨는데, 이 필요시가 구체적으로 어떤 경우인지가 궁금합니다.
만약 Order와 OrderItem에서 단방향으로 Order 엔티티에만 @ManyToOne 연관관계를 걸고 설계를 했다는 가정하에 Order와 OrderItem 정보 조회가 필요한 경우, 현업에서는 양방향 연관관계를 맺어서 해결하시는지 아니면 dto를 만들어서 in절 또는 fetch join후 스트림으로 뽑아내시는지 궁금합니다. 양방향 연관관계를 많이 사용하는지도 궁금합니다.
답변 1
0
안녕하세요. MoonHyuck Song님 좋은 질문입니다.
우선 OrderItem -> Order 방향으로만 다대일 단방향 관계로 걸려있다고 가정할께요.
ORM 설계에서는 다대일 단방향 관계로 설계가 끝납니다.
1. 보통 다대일, 일대다 양방향 관계가 필요한 경우는 일대다 방향으로 fetch join이 필요할 때 입니다.
fetch join이 성능상 매우 편리하기 때문에 현실적으로 이것 때문에 많이 사용됩니다.
2. 그래고 객체지향 설계에서 Order -> OrderItem으로 관계가 걸리는 것이 더 나은 경우에도 양방향 연관관계가 사용됩니다.
연관관계는 적을 수록 좋지만 말씀드린 이유들 때문에 추가를 어느정도 하는 편입니다.
설계라는 것이 정답이 있기 보다는 그때그때 상황에 더 나은 선택지가 있는 것이어서 딱 정답은 없는데, 앞서 말씀드린 1,2 두가지가 큰 영향을 줍니다.
감사합니다.