엔티티 클래스 생성 시 생성자 및 Setter 생성과 관련해 질문 드립니다.
482
작성한 질문수 28
해당 강의를 이제 막 시작하고 있는 학생입니다.
queryDSL 환경 세팅을 하다가 엔티티 클래스에 궁금한 점이 생겨서요.
보통 질의에 대한 결과 데이터에 대해 수정이 불가능하도록 불변 객체로 만든다고 하잖아요.
그 때문에 JPA에서 사용하는 엔티티 객체 또한 생성자를 public으로 만들지 않고 Setter의 사용도 피한다고 알고 있습니다.
그런데 위 방법이 JPA로 질의를 해올 때는 문제가 되지 않지만 ( 즉, select할 경우 )
직접 제가 객체를 만들어서 ( new 생성자 사용 ) insert를 하거나, select한 객체에 필드 값을 수정해서 ( setter 사용 ) update를 하는 경우에는 public 생성자도 setter도 모두 필요한 것 아닌가요?..
혹은 제가 잘못된 정보를 알고 있는 것일까요??
select 시 대안으로 해당 결과를 final로 하여 받으면 불변 객체가 되어 조회 이후 데이터 수정을 막을 수 있다고 생각했지만 public 생성자 사용 여부와 setter 사용 여부에 대한 적절한 상황 파악이 어려워 질문 드립니다!
답변 1
1
안녕하세요. qpal1zm23님, 공식 서포터즈 y2gcoder입니다.
정확히는
무분별한 setter 사용을 지양하라
가 의도입니다.
public 생성자도 public 생성자를 전부 쓰면 안된다기보다는 기본 생성자 + setter 조합은 말씀하신 것처럼 객체의 불변성을 해치기도 좋고, 값의 변경이 쉬워 데이터에 대한 추적을 어렵게 만듭니다.
더 자세한 내용은 아래 링크들을 참고해주세요!
감사합니다.
SpringBoot 4.X에서의 Querydsl 설정
0
109
2
querydsl 오픈소스에 대한 질문
1
85
1
예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?
0
117
1
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
0
331
2
여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요
1
74
1
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
0
164
1
querydsl sum() 메서드 없어요.
0
163
2
build 디렉터리 생성
0
142
2
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
0
117
2
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
0
95
1
오타 제보 드립니다.
0
74
2
벌크 연산과 flush, clear
0
78
1
Run As Intellij 로 변경시 Q타입 import 불가
0
90
1
QHello import하기 문제 발생
0
150
2
등록된 함수 보는법(H2Dialect) 질문
0
71
2
5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의
1
201
2
[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??
1
204
1
querydsl 설정 문제
0
223
2
quey dsl 설정부분
0
159
2
count 쿼리 관련 질문입니다!
0
75
1
stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.
0
90
1
답변부탁드리겠습니다.
0
92
2
(OrderSpecifier)관련 내용 어디있을가요
0
67
1
중급문법 벌크연산에서
0
84
2





