inflearn logo
강의

講義

知識共有

本当! Spring BootとJPAの活用1 - Webアプリケーション開発

エンティティ設計時の注意点

양방향 편의 메서드에서 필드에 직접 접근하는 문제

606

Dompoo

投稿した質問数 14

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

본 강의 마지막 부분에 연관관계 편의 메서드를 만드는 부분이 있는데, 필드에 직접 접근하여 설정하는 내용이 있습니다. 예를들어

 

this.child.add(child);

this.member = member;

와 같은 코드들이 문제가 되지는 않겠지만 유지보수 측면에서 안 좋은 영향을 끼치는 것 같아서

this.getChild().add(child);

this.setMember(member);

와 같이 리팩토링하는 것이 좋지 않나 궁금합니다.

java spring 웹앱 spring-boot jpa

回答 2

1

jaden

질문에서 유지보수적인 측면에서 필드접근이 아닌 getter 와 setter 를 활용하는게 더 좋다고 생각하시는 이유도 알려주시면 감사하겠습니다! (궁금해서 여쭤봐요)

0

codetrain999

안녕하세요, Dom poo 님! 공식 서포터즈 codesweaver 입니다.

보통 관계 메서드는 엔터티 내부에 작성합니다. 그리고 많은 경우 엔터티는 Setter를 제공하지 않는 방향으로 원칙을 정합니다. 그래서 만약 제시하신것처럼 setter를 사용해야 한다면 private setter를 작성하여 사용할 수 있습니다. 그리고 만약 setter를 사용할 때 동작해야 할 부가처리가 있다면 setter를 사용하는것이 안전합니다.

다만 편의 메서드의 목적은 객체 그래프 탐색이 가능하도록 상호간의 연결을 목적으로 하기에 부가 동작이 필요하지 않은 경우가 많습니다. 그럴때는 필드를 직접 참조하여도 무방합니다.

감사합니다.

sdk 설정 오류

0

46

2

오탈자 - @Transactional

0

53

1

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

0

49

1

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

0

62

1

MemberRepositoryTest 실행오류

0

74

1

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

1

182

2

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

1

137

2

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

0

50

1

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

0

71

1

기본 생성자

0

59

1

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

0

100

1

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

0

163

4

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

0

115

1

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

0

117

2

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

0

110

1

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

0

112

1

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

0

106

2

빌드 툴, Gradle

0

57

1

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

0

73

2

Repository에서 EntityManager 주입 방식 차이

0

87

1

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

0

70

1

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

0

80

1

dirty checking 질문드립니다.

0

80

1

동시성 관련 질문입니다

0

72

1