inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

엔티티 설계시 주의점

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

383

묵국

작성한 질문수 12

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 클래스 내에 작성하신 이유가 궁금해요
컨트롤은 연관관계의 주인인 엔티티객체에서 하는것이 아닌가요?
아니면 컨트롤이라고 말씀하신게 객체 관점에서 말씀하신건가요?

java spring 웹앱 spring-boot jpa

답변 2

5

김영한

안녕하세요. 묵국님

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

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

감사합니다.

0

인프런 AI 인턴

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

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

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

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

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

sdk 설정 오류

0

53

2

오탈자 - @Transactional

0

56

1

src/test/resources 테스트 경로 문제

0

50

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

64

1

MemberRepositoryTest 실행오류

0

81

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

183

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

142

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

51

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

71

1

기본 생성자

0

60

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

103

1

멤버서비스테스트 부분에서 막힙니다.

0

165

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

116

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

120

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

114

1

24분 27초 연관관계 편의 메서드 위치

0

113

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

109

2

빌드 툴, Gradle

0

59

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

77

2

Repository에서 EntityManager 주입 방식 차이

0

90

1

롬복과 사용자 정의 setter 메서드

0

73

1

주문 목록 조회 fetch join 질문드립니다

0

82

1

dirty checking 질문드립니다.

0

83

1

동시성 관련 질문입니다

0

75

1