0

먼저 소프트웨어 개발에 대한 표준 접근 방식은 많은 개발자에게 일반적이라고 생각합니다. 하지만 상태가 없으며 상태 (State)가없고 동작이없는 객체 (Beans)가 있습니다 (일반적으로 빈혈 도메인 모델이라고도 함).기존 (타사) 데이터 모델 (Java)을 사용하는 도메인 기반 개발

나는 새로운 프로젝트에서 DDD (Domain Driven Design) 접근 방식을 시도하기로 결정했으나 실제로는 두 가지 문제점을 가지고 있습니다.

  1. 내 조직에서 사용하는 (어느 단단히 비즈니스에 연결되고, 내가 이것에 대해 할 수있는 아무것도 기존의 타사 데이터베이스가 :이 이어질 수있는 방법을 언급 어떤 코멘트를하지 않으을 제 3자가 데이터 모델을 변경 한 경우 문제가 발생합니다 ... 알아요 !!). 데이터를 표현하기 위해 최대 절전 모드 엔티티를 만들었지 만 DDD (즉, 데이터 액세스를 캡슐화하는 리치 도메인 모델)의 원칙에 부합하는 내부 모델 표현으로 변환하는 방법을 확신 할 수 없습니다.

  2. 이런 종류의 문제에 대한 패턴이 있어야하지만 찾기가 어렵습니다. 이것은 내가 잘못된 방식으로 (아마도 일반적으로 접근되는 방식이 아닌) 무언가를하고 있다고 믿게 만듭니다.

    • 가 나는 때문에 믿고, 최대 절전 모드 엔티티 사이에 키 실체를 확인하고 시도하고이 정말 어려웠다 (관련 값 객체와 함께 다음을 패키지로 :

나의 현재 전략에있다 데이터로 시작하여 도메인 만들기 ... 접근 방식에 대한 제안도 환영합니다.)

  • 확인한 각 패키지에 대해 엔티티를 관리하기위한 저장소를 만들었습니다.
  • 저장소 (예 : StudentHibernateR epository) 필요한 최대 절전 엔터티를 잡고 프록시 클래스로 래핑합니다.
  • 각 프록시 클래스에서 래핑 된 최대 절전 모드 엔터티를 데이터 소스로 사용하기 위해 통과하는 비즈니스 규칙을 추가합니다 (다시 코드 동작을 풍부하게 만들려고 시도 함).
  • 누구나 비슷한 일을 해본 경험이 있다면 경험/패턴을 공유 할 수 있습니다. 내가 취한 전략에 대해 반성 할 수 있다면 도움이 될 것입니다.

    건배,

    JLove

    답변

    0

    풍부한 도메인 모델이 only part of DDD입니다. 기존의 악화 된 데이터 모델을 풍부한 도메인 모델에 적용하는 것은 가치가 없을 수 있습니다. 지속성 무지는 DDD의 바람직한 측면이지만 실제로는 타협이 이루어지고 지속성과 같은 기술적 인 문제는 단순히 지연 될 수 없습니다.

    프록시 접근 방식의 한 가지 문제점은 매핑 복잡성이 증가한다는 것입니다. 프록시 엔티티는 기본 NHibernate 맵핑 된 오브젝트에 위임해야하며 특정 시나리오에서는 이것이 엉망이 될 수 있습니다.

    그러나 도메인 모델이 없어도 DDD의 많은 이점을 얻을 수 있습니다. 먼저 핵심 도메인과 모든 하위 도메인 및 해당 제한된 컨텍스트를 식별하려고합니다. 그런 다음 모든 유스 케이스를 application services에 캡슐화하면 NHibernate 매핑 된 엔터티에 위임하게됩니다.행동이 풍부한 기업의 이익을 얻지는 못하지만 이러한 유형의 시나리오에서는 공정한 균형을 유지하는 것으로 나타났습니다.

    관련 문제