인프런 커뮤니티 질문&답변

Dompoo님의 프로필 이미지
Dompoo

작성한 질문수

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

엔티티 설계시 주의점

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

작성

·

478

0

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

[질문 내용]

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

 

this.child.add(child);

this.member = member;

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

this.getChild().add(child);

this.setMember(member);

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

답변 2

1

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

0

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

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

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

감사합니다.

Dompoo님의 프로필 이미지
Dompoo

작성한 질문수

질문하기