MapStruct 와 Entity Setter 질문
770
작성한 질문수 4
안녕하세요. 이도원 선생님
강의 항상 잘 듣고 있습니다.
강의와 연관되어 MapStruct 와 Entity Setter 에 대해 문의드립니다.
------------------------------------------------
제가 이해한 내용은 두가지 입니다,
1. Entity 에 Setter 는 지양해야한다.
2. MapStruct 는 구현체 자동생성에서 Field mapping에 target의 setter 를 사용한다.
------------------------------------------------
여기에서 제가 질문드리고 싶은 내용은 한가지입니다.
1. 함수의 사용권한을 특정 클래스객체에 제한할 수 있는가? ( Entity Setter 의 사용권한을 Mapper 에게만 줄 수 있는가? )
------------------------------------------------
구현체를 직접 수정하기에는 번거롭고,
필수필드만 setter를 생성하기엔 선택필드가 들어갈 상황을 배제하기에 오류가 예상됩니다.
결국 MapStruct 를 사용할때는 setter를 생성해 두어야 할꺼 같아서 질문드립니다. 감사합니다.
답변 1
0
안녕하세요, 이도원입니다.
네 말씀하신 것처럼 DTO, VO, Entity 등의 객체는 가능하면 Setter를 통합 데이터의 수정보다는 생성자를 통해 초기 데이터의 설정 후 수정 메소드 등을 통해 변경하는 것이 좋다고 생각합니다. 물론 MapStruct와 같은 매퍼 유틸리티에서는 편의성을 위해 사용하고 있지만, 벤치마크를 통해 비교해 보아도 직접 구현해서 사용하는 것이 성능 성 더 빠르기도 합니다.
자바에서는 함수라는 개념보다는 클래스에 속한 메소드의 개념이기 때문에, 인스턴스를 생성해서 사용하거나 직접 클래스를 통해 사용해야 하게 되기 때문에, 클래스 생성 또는 싱글턴 인스턴스에 공통적인 제어를 넣어서 메소드의 권한을 제어할 수 있습니다. 다만, 특정한 Entity에 대한 Setter만을 Mapper에게 부여하기 위해서는 MapStruct를 확장해서 구현해야하지만, 이것을 지원하지 않을수도 있습니다.
만약 필수 필드만을 가진 Entity가 필요하면, 새롭게 생성해서 사용하시는게 더 간편할거라 생각됩니다.
감사합니다.
kafka 업데이트 강의 듣고 시포요
0
112
2
강의 교안
0
103
2
마이크로서비스간 통신 시, 인증 처리
0
112
2
api gateway 에서 인증 처리
0
76
1
섹션 19 질문드립니다
0
83
2
강의 자료 업데이트
0
104
2
부하분산 강의 섹션
0
65
1
강의자료는 어디에서?
0
98
2
강의 자료는 어디서 다운 받을 수 있나요?
0
131
2
전체 사용자 조회시 오류
0
65
1
혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??
0
118
2
학습 방향
0
105
2
카프카 커넥터 사용 목적 문의
0
90
2
kafka 강의
0
117
2
서비스 디스커버리 종류
0
90
2
강의 자료에 대해서 궁금해요
0
125
2
GlobalFilter, LoggingFilter가 동작하지 않습니다.
0
94
2
Kafka Source Connect 버전 에러
0
95
2
소스커넥터는 사용안한 거 맞죠?
0
84
2
강의자료 업데이트 문의
0
99
2
강의에서 BCryptPasswordEncoder 에 역할(5-2)
0
63
1
강의 업데이트 계획이 궁금합니다.
0
120
2
MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)
0
168
2
어떤 것이 업데이트 된 건가요?
0
169
2





