작성
·
83
0
안녕하세요. 강의 내용 16분30초쯤에
Order order = new Order();
order.addOrderItem(new OrderItem());
위 코드를 아래와같이
Order order = new Order();
em.persist(order);
OrderItem orderItem = new OrderItem();
orderItem.setOrder(order);
1. 이렇게 수정하셨는데, 이렇게 하시는 이유가 무엇인가요..? 양방향연관관계라서 addOrderItem()을 통해 양쪽에 값을 설정해줬었는데 왜 아래와 같이 변경하신건지 궁금해서 질문드립니다.
2. Order와 OrderItem간의 관계를 양방향연관관계로 하지말고, OrderItem -> Order 단방향연관관계로 설계해서 OrderItem에만 setOrder()로 설정해주신것일까요??
3. 만약 2번의 내용이 맞다면, 그렇게 하신 이유도 궁금합니다...
감사합니다
답변 4
0
연관관계의 주인 쪽으로 단방향 연관관계를 유지한다는 말씀이 어떤 의미인가요???
OrderItem , Order 둘 간의 관계에서 단방향 연관관계로 하면 OrderItem에만 setOrder()를 통해 값을 설정해서 단방향 연관관계를 설정하면 된다는 말씀이실까요??
단방향 연관관계 일때는 연관관계의 주인인 엔티티의 필드에 값을 설정해줘야하는것인가요??
0
안녕하세요. 오리쉐리님
연관관계의 주인 쪽으로 단방향 연관관계만 유지해도 JPA를 통한 연관관계에는 문제가 없다는 뜻입니다.
대신에 객체에서 반대로 조회하는 경우가 필요하다면 반대편 연관관계도 추가해야겠지요?
감사합니다.
0
그럼 Order와 OrderItem간의 관계를 양방향연관관계로 하지말고, OrderItem -> Order 단방향연관관계로 설계해서 OrderItem에만 setOrder()로 설정해주신것일까요??
0
안녕하세요, 인프런 AI 인턴입니다. 오리쉐리님.
양방향 연관관계에서 setOrder()
를 사용하는 이유와 연관관계를 설정하는 방식에 대해 질문 주셨군요. 아래에서 관련 내용을 설명드리도록 하겠습니다.
왜 setOrder()
를 사용했는가?
양방향 연관관계에서는 양쪽 엔티티가 서로 참조를 갖기 때문에, 어떤 한쪽에서 연관관계를 설정할 때 반대쪽에서도 연관관계를 맞춰줘야 합니다. 이때 addOrderItem()
메서드는 Order
와 OrderItem
모두에 적절히 설정되도록 하는 편의 메서드 역할을 합니다. 그러나 setOrder()
를 통해 OrderItem
에서 Order
를 설정하는 것은 orderItem
이 직접적으로 어떤 order
로 묶여 있는지를 명확히 보여줄 수 있고, 때로는 더 명확한 코드 작성이 가능합니다.
단방향으로의 변경 이유
사실 양방향 연관관계는 코드의 복잡성을 높힐 수 있기 때문에, 필요하지 않다면 단방향으로 설정하는 것도 좋은 방법입니다. OrderItem
이 Order
를 참조하는 단방향 설정은, 데이터의 흐름이 일방적이거나 한쪽에서만 데이터를 조작할 필요가 있을 때 유리합니다. 이렇게 단방향으로 설계하면 코드가 간결해지고 유지보수가 용이해질 수 있습니다.
단방향 선택의 장점
단방향 관계를 선택하면 엔티티 간의 의존성을 줄일 수 있으며, 데이터 갱신이나 조회 시 더 명확한 데이터 흐름을 유지할 수 있습니다. 또한, 성능 최적화 측면에서도 부담이 줄며, 필요 이상의 복잡성을 감소시킵니다.
추가로 아래 링크에서도 유사한 주제에 대해 설명한 내용이 있으니 참고하시기 바랍니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.