dto에서 toEntity VS entity 안에 정적 팩토리 메서드
1136
작성자 없음
작성한 질문수 0
@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를 사용하는 것이 적합할 수 있습니다.
이 정보가 안성훈님의 질문에 도움이 되길 바랍니다.
여러 파드 환경에서 단일 실행 보장 방식
0
11
2
패키지 구분에 대해 궁금한게 있습니다
0
20
2
코드 자료
0
41
2
조회속도 개선에서 더 개선하는 방법이 궁금합니다.
0
35
2
servlet과 container에 대한 질문입니다
0
27
1
RepositoryTest의 패키지 위치가 domain인 이유
0
35
2
도메인 모델에서 관계와 규칙을 구분하는 방법
0
44
2
UserService, CertificationService 책임 분리 기준 질문
0
28
1
spring initialiser 어떤걸 선택해야될지 모르겠어요
0
35
2
구현체가 동적으로 정해질 때, 팩토리 기법을 사용하나요?
0
53
2
Json 요청 처리
1
37
2
로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.
0
28
2
Build 관련 문제 (테스트 관련 문제)
0
44
2
job, step execution 관련 질문 드립니다.
0
37
2
이미지 업로드와 db 트랜잭션 묶는법
0
44
1
sdk 설정 오류
0
51
2
Orchestration SAGA 패턴 보상에 대한 질문입니다.
0
52
2
[건의][6장][작전1] deprecated 메소드
1
49
2
[예제][3장][작전2] windows 에서 마지막 예제
0
41
1
NaverBookRepository.class 의 위치에 따른 모듈간의 의존성에 대해 질문드립니다.
1
34
2
Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4
0
53
2
REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!
0
31
1
패키지 vs 모듈 선택 기준
0
53
2
오탈자 - @Transactional
0
56
1





