인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

감바스님의 프로필 이미지
감바스

작성한 질문수

Practical Testing: 실용적인 테스트 가이드

Business Layer 테스트 (3)

DTO -> 엔티티, 엔티티 -> DTO 과정에서의 빌더 패턴과 정적 팩토리 메서드 사용에 대해 질문 있습니다.

작성

·

119

·

수정됨

0

DTO -> 엔티티, 엔티티 -> DTO 과정에서의 빌더 패턴과 정적 팩토리 사용에 대해 아래와 같이 정리를 했는데 제가 정리한 방식이 타당한 방식인지 궁금합니다.

 

DTO -> 엔티티

엔티티의 생성자에 빌더 패턴을 적용합니다.

외부에서 엔티티를 생성하려면 빌더 패턴을 사용하여 엔티티를 생성합니다. 예를들어 서비스 레이어에서 엔티티의 빌더 패턴을 사용하여 DTO를 엔티티로 변환하는 작업을 가집니다.

엔티티쪽에서 DTO를 엔티티로 변환하는 정적 팩토리 메서드를 가지지 않는 이유 변화가 심한 DTO에 엔티티가 의존하는 것은 좋지 않다고 생각했습니다. 그래서 객체 생성에 빌더 패턴만 적용했습니다.

 

엔티티 -> DTO

DTO쪽에서 생성자에 빌더 패턴을 적용합니다.

또한 엔티티 -> DTO로 변환하는 정적 팩토리 메서드를 만드는데 이때 DTO 객체 생성은 DTO쪽에서 정의한 빌더 패턴을 적용합니다.

DTO는 엔티티에 의존해도 아무 문제가 없다고 생각합니다. 그래서 빌더 패턴도 사용하고 정적 팩토리 메서드도 사용하여 DTO 객체를 생성했습니다.

이 둘을 같이 사용할 경우 빌더 패턴과 정적 팩토리 메서드 장점 모두 사용할 수 있다고 생각하여 2가지 모두 사용하여 DTO 객체를 생성하도록 했습니다.

답변 2

0

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, 감바스 님!

네, 잘 정리해 주셨네요 ㅎㅎ
빌더 패턴 같은 편의 기능을 다 떠나서, 엔티티가 DTO에 의존하지 않게끔 하는 것이 가장 중요하다는 점 기억해주시면 좋을 것 같습니다.

감사합니다 🙂

0

안녕하세요, 인프런 AI 인턴입니다.
감바스님이 정리하신 방식에 대해 검토해보겠습니다.

  1. DTO -> 엔티티 변환:

    • 엔티티의 생성자에 빌더 패턴을 적용하여 서비스 레이어에서 DTO를 엔티티로 변환하는 것은 좋은 접근입니다.
    • 엔티티가 DTO의 변화에 영향을 받지 않도록 하는 것도 좋은 생각입니다. 빌더 패턴을 사용하면 객체를 유연하게 생성할 수 있고, 변경 요구사항에 비교적 유연하게 대응할 수 있습니다.
  2. 엔티티 -> DTO 변환:

    • DTO에서 빌더 패턴과 정적 팩토리 메서드를 모두 사용하여 객체를 생성하는 것도 좋습니다. DTO는 엔티티에 의존해도 됩니다. DTO는 주로 데이터를 전달하기 위한 역할을 하므로 엔티티의 필드를 바탕으로 객체를 만드는 것이 큰 문제가 없습니다.
    • 빌더 패턴과 정적 팩토리 메서드를 함께 사용하여 생성 시 유연성과 가독성을 모두 확보할 수 있습니다.

감바스님께서 적용하신 방안은 빌더 패턴과 정적 팩토리 메서드의 장점을 잘 살리면서 엔티티와 DTO의 의존성을 적절히 관리한 좋은 전략이라고 생각됩니다. 계속해서 프로젝트에 따라 최적의 방법을 선택하며 사용해나가시면 좋은 결과가 있을 것입니다.

추가적으로, 해당 주제에 관해서 더 많은 정보를 원하시면, Spring Boot Reference Documentation을 참고하실 수 있습니다.

감바스님의 프로필 이미지
감바스

작성한 질문수

질문하기