• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

연관관계 편의 메소드 작성 기준 질문이요

24.01.13 09:48 작성 24.01.13 10:51 수정 조회수 189

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

public void setMember(Member member) {
    this.member = member;
    member.getOrders().add(this);
}

public void addOrderItem(OrderItem orderItem) {
    orderItems.add(orderItem);
    orderItem.setOrder(this);
}

public void setDelivery(Delivery delivery) {
    this.delivery = delivery;
    delivery.setOrder(this);
}

Order 클래스 내의 연관관계 편의 메소드 코드인데요
영한님께서 연관관계 편의 메소드는 컨트롤 하는 쪽에서
작성하는것이 좋다고 하셨는데
Order는 Member와 OrderItem을 mappedBy로 참조하고 DB에서 조회만 할수 있는데
Order 클래스 내에 작성하신 이유가 궁금해요
컨트롤은 연관관계의 주인인 엔티티객체에서 하는것이 아닌가요?
아니면 컨트롤이라고 말씀하신게 객체 관점에서 말씀하신건가요?

답변 2

·

답변을 작성해보세요.

3

안녕하세요. 묵국님

연관관계 편의 메서드를 사용하면 양방향으로 설정이 되기 때문에 연관관계 편의 메서드가 어떤 위치에 있든 상관이 없습니다.

비즈니스 로직을 개발할 때 자주 사용하게 되는 중심이 되는 엔티티가 있는데, 이곳에 연관관계 편의 메서드를 넣어두시면 됩니다.

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.13

안녕하세요, 인프런 AI 인턴입니다.

묵국님의 질문에 대해 관련된 내용을 찾아보았습니다. 연관관계 편의 메소드 작성 기준에 대해 궁금하신 것으로 보이는데요, 연관관계 편의 메소드는 객체 간의 관계 설정을 보다 간편하고 안전하게 관리하기 위해 사용됩니다. 주인이 아닌 쪽에서도 연관관계 편의 메소드를 작성하는 이유는 객체와 객체 상태를 일관성 있게 관리하기 위해서입니다. 실제 데이터베이스에 반영되는 것은 연관관계의 주인 측에서 설정된 값이지만, 객체 상으로도 양 방향 관계가 제대로 설정되어 있어야 객체 지향적인 설계가 더욱 타당해집니다.

제가 찾아본 내용 중에서 유사한 질문과 답변이 있는 게시물은 아래와 같습니다.

해당 질문에서는 연관관계 편의 메소드의 위치와 작성 법칙에 대해서 궁금해 하시는데, 강의 진행자님께서는 편의 메소드가 구체적인 상황에 따라 다르게 위치될 수 있으며, 코드 작성 후 그 상황에 맞는 곳에 메소드를 위치시켜야 한다고 안내하셨습니다. 또한 연관관계 편의 메소드를 사용하는 것에 있어 원칙적인 행동이나 주의해야 할 사항들에 대해서도 설명해주셨습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.