강의

멘토링

로드맵

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

JunBass님의 프로필 이미지
JunBass

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

도메인 모델 패턴

도메인엔티티와 JPA 엔티티 분리 문의

작성

·

14

0

안녕하세요.

 

도메인 엔티티와 JPA 엔티티를 아예 분리하는 case도 있는지 궁금합니다.

 

예를들어 Domain 패키지에는 순수한 도메인 클래스들만 모아놓고 JPA에선 도메인 엔티티 -> JPA엔티티로 변환해서 사용하는경우도 있나 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. JunBass님.

도메인 엔티티와 JPA 엔티티를 분리해서 사용하는 케이스는 확실히 존재하며, 다양한 프로젝트에서 이런 아키텍처를 채택하는 경우도 있습니다. 이는 주로 도메인 로직과 데이터베이스 매핑 로직을 분리하여 각자의 역할을 명확하게 하기 위한 설계입니다.

  1. 분리의 이유: 도메인 모델은 비즈니스 로직을 순수하게 유지하고, JPA 엔티티는 데이터베이스와의 매핑에 집중하기 위해 분리합니다. 이는 도메인이 복잡할 때 또는 도메인 로직이 빈번히 변경되거나 다양한 저장 방식(RDB, NoSQL 등)을 고려할 때 유용할 수 있습니다.

  2. 구현 방식: 도메인 패키지에는 비즈니스 로직을 포함한 순수한 도메인 클래스를 작성하고, JPA 패키지에는 이 도메인 클래스를 데이터베이스 테이블과 매핑시키기 위한 JPA 엔티티를 둡니다. 이렇게 하면, 도메인 객체를 JPA 엔티티로 변환하거나 그 반대를 수행하는 어댑터 클래스나 서비스 레이어가 필요할 것입니다.

  3. 장점과 단점: 분리함으로써 도메인 모델의 유연성이 증가하지만, JPA의 편리한 기능들, 예를 들어 Lazy Loading, 영속성 컨텍스트 등의 활용이 어려울 수 있고, 변환 작업에 따른 추가적인 코드가 필요할 수 있습니다.

아래의 토비님의 답변을 통해 이러한 주제에 대한 깊이 있는 논의를 확인해보실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

JunBass님의 프로필 이미지
JunBass

작성한 질문수

질문하기