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

kangsy763님의 프로필 이미지

작성한 질문수

실전! 스프링 데이터 JPA

스프링 데이터 JPA 구현체 분석

modelMapper에 대해 질문하고 싶습니다!

작성

·

1.5K

5

안녕하세요 영한님!!! 요즘 진행중인게 있어서 아직 새강의를 못들었어요 ㅜㅜ 요번 추석날때 외할머니집 가서 들으려고 하는데 기대가됩니다 ㅎㅎ!

이번 질문은 다름이 아니고 현재 modelMapper.map() 메서드를 이용해서 dto 에 있는 정보를 엔티티에 집어넣으려고 하는데, 해당 메서드가 엔티티에 setter 메서드 들이 존재할 때에만 작동을 하는 것 같더라구요

빌더패턴 또한 setter가 돌아가는데, setter사용을 지양해야하는데, 영한님의 경우에는 빌더패턴을 사용을 안하시나요? 그리고 modelMapper.map() 메서드도 지양하시는 편인가요??

분명 해당 내용이 로드맵 강의 중 1개 강의에서 다뤘었고 현직자 분이 올린 질문글에도 빌더패턴과 관련해서 질문이 있었던걸로 기억해서 찾으려고하는데 안찾아지네요 ㅜ.ㅜ

답변 5

5

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. kangsy763님^^ 오랜만입니다!

아... 저는 modelMapper를 좋아하지 않는 편입니다.

modelMapper가 룰이 복잡하기도 하고, 또 자동화 되는 것이 참 좋기는 하지만, 컴파일 시점에 오류를 잡을 수 없어서요^^!

물론 장점도 많으니 팀에서도 누가 쓴다고 할때 말리지는 않습니다^^!

저는 실무에서 엔티티는 명확하게 setter를 사용하지 않습니다. getter는 실용적인 관점에서 여는게 좋더라구요.

엔티티를 생성하는 방법은 제 나름의 기준이 있습니다.

1. 간단하면 그냥 생성자를 사용

2. 조금 의미를 부여해야 하면 정적 팩토리 메서드 사용

3. 복잡하면 빌더 패턴 사용, 실용적인 관점에서 롬복 빌더를 생성자와 함께 사용(생성자 위에 애노테이션 붙여서)

도움이 되셨길 바래요^^

2

김영한님의 프로필 이미지
김영한
지식공유자

네 kangsy763님^^ 중요한 것은 바로 생성 시점에 필요한 값을 다 넣고, 꼭 필요한 경우에만 수정할 수 있게 엔티티를 설계하는게 유지보수하기 좋습니다. ㅎㅎ

즐거운 명절 되세요^^!

2

kangsy763님의 프로필 이미지
kangsy763
질문자

아니!? 저는 지금까지 builder 패턴의 내부 구현코드가 set으로 이루어지는지 알고있었네요... 빠르고 좋은 답변 항상 감사합니다!!!!

이번주 다가오는 추석 잘 보내시길 바랄게요!!!!! 😆

1

김영한님의 프로필 이미지
김영한
지식공유자

setter를 안열고 싶어서 빌더패턴을 쓰는거라서 안열어도 됩니다^^!

그게 바로 빌더패턴의 가장 큰 장점이지요!

1

kangsy763님의 프로필 이미지
kangsy763
질문자

빌더 패턴을 엔티티에 부여할 때에 setter 또한 열어야 되지않나요?? 이 상황에서는 그냥 사용하겠다고 마음먹고 setter를 받아들이시는건지 궁금합니다!