dto에서 toEntity VS entity 안에 정적 팩토리 메서드
1162
작성자 없음
@Service
public class MemberService {
private final MemberRepository memberRepository;
public void save(MemberDto memberDto) {
Member member = memberDto.toEntity();
memberRepository.save(member);
}
}@Service
public class MemberService {
private final MemberRepository memberRepository;
public void save(MemberDto memberDto) {
Member member = member.createMember(memberDto);
memberRepository.save(member);
}
}dto에서 toEntity 와 entity 안에 정적 팩토리 메서드 중 어떤 코드를 쓰는게 좋을가요?
의존성으로 보면 첫번째 코드가 맞는걸까요?
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
안성훈님의 질문에 대해 답변드리겠습니다.
DTO에서 toEntity를 사용하는 방식과 엔티티 안에 있는 정적 팩토리 메서드를 사용하는 방식은 각각 장단점이 있습니다. 여기서 중요한 것은 의존성과 객체의 책임의 분리입니다.
첫 번째 코드(sample1)에서 memberDto.toEntity()를 사용하는 방식은 DTO가 엔티티로의 변환 책임을 가지고 있음을 의미합니다. 이 방식은 DTO와 엔티티 간의 결합도를 낮춰줄 수 있으며, 엔티티의 생성 로직이 변경되어도 DTO를 수정할 필요가 없어 엔티티와 DTO의 관심사를 분리할 수 있습니다.
두 번째 코드(sample2)에서 Member.createMember(memberDto)를 사용하는 방식은 엔티티 내에 정적 팩토리 메서드를 정의함으로써, 엔티티 생성의 책임을 엔티티 자체에 두는 방법입니다. 이 방식은 엔티티의 생성 로직을 엔티티 내부에 캡슐화함으로써 엔티티의 생성 방법이 변경되더라도 서비스 계층의 코드 변경을 줄일 수 있습니다. 하지만 이 경우 DTO가 엔티티의 생성 메서드에 의존하게 되어, 결합도가 높아질 수 있습니다.
따라서 선택 기준은 프로젝트의 필요에 따라 달라질 수 있습니다. 일반적으로 엔티티의 생성 로직이 복잡하거나 생성 방법이 자주 변경될 것으로 예상된다면, 엔티티 내에 정적 팩토리 메서드를 정의하는 것이 유리할 수 있습니다. 반면, DTO와 엔티티의 결합도를 낮추고 싶거나 엔티티의 생성 로직을 외부에 노출시키고 싶지 않다면 DTO에서 toEntity를 사용하는 것이 적합할 수 있습니다.
이 정보가 안성훈님의 질문에 도움이 되길 바랍니다.
HelloSpringApplication.java 클래스 실행 오류
0
11
1
build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)
0
19
1
네이버 API | '검색 - 책' API 제공 중단
0
39
2
Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.
0
46
2
장치 의존성과 CSR
0
36
1
테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.
0
31
1
[영한님]Spring Boot 및 프로젝트 생성
0
55
2
JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문
0
55
3
강의 요청 문의
0
40
2
클로드코드 명령어-대화&세션관리 수업 자료
0
42
1
PlatformTransactionManager, ResourcelessTransactionManager 질문
1
67
2
자료 한번에 다운받기
0
33
1
스프링 빈 등록 방법 2가지 다 알아야하는 이유
0
59
1
mybatis 를 이용한 crud에서 insert에서 resultType='long" 이라고 하셨는데요,
0
27
1
설계 트레이드 오프 링크 접속 안됨
0
85
2
테스트 질문, 어떤것을 사용할것인것에 대해서
0
46
1
깃허브주소 궁금합니다.
0
36
2
mariaDB 설정
0
33
1
섹션4 퀴즈 오타있어요.
0
46
1
AWS 배포 성능테스트
0
75
2
퀴즈가 안열려요
0
76
2
7강 보고 있는데요.. 글자가 너무 작아요
0
43
1
트래잭션 전파 기본- 에 대한 개념 질문? 이렇게 생각해도 맞나요?
0
46
1
헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다.
0
130
2





