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

log4j님의 프로필 이미지

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

DDD와 JPA

22.02.21 20:27 작성

·

530

0


=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
여기에 질문 내용을 남겨주세요.
 
안녕하세요
 
기존에 nosql위주로 개발을 하다가
mysql 및 JPA를 도입하려고하는 영한님 강의 듣고 있는 개발자입니다.
 
 
ddd와 연관지어서 jpa의 엔티티 정책에 궁금한 점이 2가지 있는데 (유사한 카테고리)
 
 
1. Team 에그리거트와 Member 에그리거트는 간의 경계가 허물어 지는 문제
 
예를들어서
 
@Entity
class MemberEntity {
...
@ManyToOne
Team team;
...
 
}
 
이런식으로 엔티티가 구성 하시던데요
 
에릭에반스인지 반버논 책인지 기억은 안나는데
Team을 직접 가지기보다는 String team_id;값을 가지는 것이 권장된다고 알고 있고 저는 실무에서 그렇게 사용하고 있었습니다.
제가 업무에서 mysql를 사용하지 않아서 실제 mysql jpa 사용하시는 분들도 실전에서 위처럼 그대로 사용하는지 궁금하네요.
 
JPA식으로 사용하게되면, MemberRepository에서 member 를 조회하면 , TeamRepository를 조회하지 않고도 팀 정보를 가져오게 되는 것인데, 이러면 바운디드 컨텍스가 무너지는 결과를 초래하지 않나 싶습니다.
 
이부분에 대해서 영한님 의견은 어떠신가요?
 
 
2. Entity의 오염
 
JPA를 쓰다보면 @ManyToOne, Load 정책 등 같은 비즈니스 로직과 무관한 DB종속적인 값들이 Entity에 들어가게되더라고요
DDD에서 말하는 순수 핵심 비즈니스 로직의 Entity만 넣고 쓰고 싶은데, JPA를 활용하게 되면 이게 힘든 부분이죠?
 
JPA Entity를 흔히말하는 DAO처럼 쓰고 별도의 Domain Entity를 만들고 싶은데 이렇게 가능한지 궁금합니다.
대충 JPA내용을 봤을때 이렇게 분리하는게 불가능한 것 같기는한데
 
실제로 Entity를 어떻게 사용중이신지 궁금합니다.
 
 

답변 2

3

David님의 프로필 이미지

2022. 02. 22. 14:33

안녕하세요. log4j님, 공식 서포터즈 David입니다.

1. 본 강의는 DDD를 고려하여  만든 게 아닙니다. 따라서, 강의에서 사용된 코드는 DDD에서 권장하는 설계가 적용되어 있지 않습니다.

간접 참조에 대한 부분은 아래 글 답변의 2번째 항목을 참고해주세요.

https://www.inflearn.com/questions/27918

 

2. 아래 글 답변의 첫번째 항목을 참고해주세요.

https://www.inflearn.com/questions/90087

감사합니다.

0

log4j님의 프로필 이미지
log4j
질문자

2022. 02. 23. 10:35

네 도움이 되었습니다.

참고하겠습니다.

감사합니다

log4j님의 프로필 이미지

작성한 질문수

질문하기