2016-12-16 3 views
2

현재 도메인 주도 개발 (DDD)을 배우고 있습니다. 몇 가지 튜토리얼을 본 후, 기존의 학교 프로젝트를 SOA에서 DDD로 모델링하고 싶습니다. 비서 관리 (학생과 교수를위한 CRUD), 교수 - 과제 (학생을위한 과제 만들기) 및 학생 과제 (과제 해결책 업로드)의 세 가지 경계 상황을 확인했습니다. 이름이 올바르게 선택되지 않았으며 이는 응용 프로그램의 개요 일뿐입니다.도메인 기반 개발에서 최대 절전 모드의 여러 경계 컨텍스트간에 엔터티를 공유합니다.

요점은 이름, 주소, 이메일 및 기타 자료가 포함 된 관리 및 ID 및 이름을 포함하는 교수 과제 중 하나입니다.

제 질문은 어떻게 hibernate와 JPA를 사용하여 이것을 모델링 할 것입니까? 응용 프로그램의 모든 엔티티가 JPA 주석으로 주석을 달고 필요한 모든 필드가있는 패키지를 만드는 방법과 모든 바운드 된 컨텍스트에서 해당 바운드 컨텍스트에 필요한 필드 만 포함하는 다른 클래스를 만드는 방법을 생각했습니다. 저장소는 특정 클래스에서 JPA 엔티티로 맵핑해야합니다. 더 나은 해결책이 있습니까?

감사합니다.

+0

3 개의 경계 된 모든 컨텍스트를 동일한 응용 프로그램 내에 배포하려고합니까 아니면 각각 자신의 배포 가능한, 아마도 마이크로 서비스로 간주할까요? – Naros

+0

서로 다른 패키지 또는 다른 모듈로 동일한 응용 프로그램에 배포합니다. –

+0

각 BC에 개별 클래스를 매핑하지 않는 이유는 무엇입니까? BC는 또한 적절한 도구가 선택되는 기술적 경계이기도합니다. – plalx

답변

1

제한된 컨텍스트간에 지속성을 공유하지 마십시오. 디자인에 의해 분리되어야하는 것에 커플 링을 생성합니다.

"똑같습니다"라는 느낌이 들면 컨텍스트 경계를 재고하십시오. 병합해야 할 수도 있습니다. 무언가가 분열에 저항한다면, 당신은 응집성을 깨뜨릴 수도 있지만 경계 된 맥락은 높은 응집력을 가져야합니다.

일반적으로 서로 다른 경계가있는 컨텍스트는 실생활에서 동일한 무언가에도 다른 관심사가 있습니다. 이 경우 같은 이름을 가진 도메인 객체는 완전히 다르게 보일 것입니다. 단어가 다른 맥락에서 다른 의미를 가지기 때문에 이것은 본질적으로 왜 "바운드 문맥"이라고 불리는가입니다.