=========================================
[질문 템플릿]
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를 어떻게 사용중이신지 궁금합니다.