도메인엔티티와 JPA 엔티티 분리 문의
109
작성한 질문수 2
안녕하세요.
도메인 엔티티와 JPA 엔티티를 아예 분리하는 case도 있는지 궁금합니다.
예를들어 Domain 패키지에는 순수한 도메인 클래스들만 모아놓고 JPA에선 도메인 엔티티 -> JPA엔티티로 변환해서 사용하는경우도 있나 궁금합니다.
답변 2
0
네. 물론 있습니다. 그렇게 개발하는 것이 번거롭긴 하지만 그래야할 충분한 이유가 있다면 필요하죠.
다만, 똑같이 생긴 도메인 엔티티와 JPA 엔티티를 두고, 기계적으로 변환해서 쓰는 건 아무 유익이 없을 겁니다.
DB가 레거시라서 불필요한 데이터도 많고, 구조도 이상한 경우에 이걸 그대로 도메인 모델로 가져오면 도메인 설계가 꼬일 수 있습니다. 혹은 데이터 구조와 도메인 모델 설계가 다른 경우도 있고요. 이런 이유가 분명하다면 테이블 구조를 거의 그대로 매핑하는 JPA 엔티티를 도메인 오브젝트로 쓰지 않고, 적절한 매핑을 통해서 분리할 수 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다. JunBass님.
도메인 엔티티와 JPA 엔티티를 분리해서 사용하는 케이스는 확실히 존재하며, 다양한 프로젝트에서 이런 아키텍처를 채택하는 경우도 있습니다. 이는 주로 도메인 로직과 데이터베이스 매핑 로직을 분리하여 각자의 역할을 명확하게 하기 위한 설계입니다.
분리의 이유: 도메인 모델은 비즈니스 로직을 순수하게 유지하고, JPA 엔티티는 데이터베이스와의 매핑에 집중하기 위해 분리합니다. 이는 도메인이 복잡할 때 또는 도메인 로직이 빈번히 변경되거나 다양한 저장 방식(RDB, NoSQL 등)을 고려할 때 유용할 수 있습니다.
구현 방식: 도메인 패키지에는 비즈니스 로직을 포함한 순수한 도메인 클래스를 작성하고, JPA 패키지에는 이 도메인 클래스를 데이터베이스 테이블과 매핑시키기 위한 JPA 엔티티를 둡니다. 이렇게 하면, 도메인 객체를 JPA 엔티티로 변환하거나 그 반대를 수행하는 어댑터 클래스나 서비스 레이어가 필요할 것입니다.
장점과 단점: 분리함으로써 도메인 모델의 유연성이 증가하지만, JPA의 편리한 기능들, 예를 들어 Lazy Loading, 영속성 컨텍스트 등의 활용이 어려울 수 있고, 변환 작업에 따른 추가적인 코드가 필요할 수 있습니다.
아래의 토비님의 답변을 통해 이러한 주제에 대한 깊이 있는 논의를 확인해보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
테스트 관련 질문!
0
56
2
N+1 관련해서 질문있습니다.
0
97
3
도메인 모델에서 관계와 규칙을 구분하는 방법
0
85
2
헥사고날 아키텍처에서의 배치, 시큐리티, 비동기 이벤트 처리는 어떻게 하나요?
0
168
2
어댑터에서 도메인에 직접 의존하는 경우에 대해
0
159
2
Member 도메인이 PasswordEncoder를 받는 구조 질문 있습니다.
0
136
2
MemberService와 EmailSender 책임 분리에 대한 질문
0
121
2
NonNullApi를 NullMarked로 대체하라고 합니다.
0
155
2
39. 문서와 코드 다듬기 updateInfo 테스트 질문 있습니다.
0
92
2
Repository Adapter 설계에 대해 피드백을 부탁드립니다
0
121
2
헥사고날 part2 강의 출시 예정일 문의 드립니다.
0
280
2
PT 문의사항
0
114
1
초기 어플리케이션 구동 시 compose.yml 파싱 오류
0
164
2
애플리케이션의 JPA 리턴과 도메인 모델
0
141
2
애그리거트 루트의 하위 도메인들의 depth가 깊어질 때 문의
0
153
2
페이징 처리를 해야한다면 어떻게 해야할까요?
0
209
2
애그리거트의 repository
0
132
2
Domain Expert가 정확히 어떤 역할을 하는 사람인가요?
0
259
1
회원 애플리케이션 서비스 테스트 (1)
0
118
2
정적 팩토리 메서드 관련 질문드립니다!
0
116
2
spotbug + @NonNullApi 로만 Null 방어가 될까요?
0
140
2
required 포트에 관해서
0
99
2
혹시 다음 편은 언제쯤 오픈할까요?
0
179
2
서비스 단위 테스트 코드 작성
0
107
2





