짧은 답변 : 나는 지속적이고 풍부한 도메인 개체를 좋아합니다.
긴 대답 : 나는 봄과 최대 절전 모드를 사용하여 상당히 큰 시스템 ~ 50 만에 LOC에 근무 거의 10 년 동안
. 처음에는 우리가 Hibernate를 아주 신뢰하지 않았기 때문에 부분적으로 "트랜잭션 스크립트"(Fowler 참조) 접근 방식으로 시작했습니다. 그러나 잠깐 동안 우리는 Hibernate를 신뢰하게되었고 상당히 초기의 OO에 대한 훨씬 이전의 훈련으로 인해 나는 Domain Driven Design 접근법과 결합 된 일시적인 영속성을 크게 믿었습니다. 우리는 기본적으로 우리 시스템이 ODBMS (작은 누수가 많은 :-)로 뒷받침되는 것으로 생각하게되었습니다.
저는 DDD라는 책이 아직 작성되지 않았기 때문에이 아키텍처를 "도메인 커널"이라고 불렀습니다. 이것은 Hibernate 초기에 있었으므로 도메인 모델은 주석으로 오염되지 않았습니다. 지속성에 대한 별도의 관심은 XML 매핑에서 별도로 유지되었습니다.
시간이 흐르면서 동작을 도메인 계층으로 푸시하는 것이 좋습니다. 우리는 꽤 전통적인 컨트롤러 -> 서비스 -> dao -> 도메인 계층화 구성표를 컴파일 타임 의존성으로 시행했습니다. 시간이 지남에 따라 관찰 된 것은이 모델이 계획 설정, 거래, 회계, 컴플라이언스 테스트, 판매, 브랜딩 등을 포함한 401 (k) 계획 관리의 상당히 복잡한 영역의 모든면을 대표하는 시스템에서 매우 잘 작동한다는 것입니다. (상대적으로) 투명한 "마술"지속성을 지닌 풍부한 도메인 모델은 도메인 모델의 기존 기능과 관련하여 새로운 기능을 구축 할 수 있었던 핵심 요소였습니다.
우리의 서비스 계층은 기술 서비스 (예 : 전자 메일, 파일 I/O, 큐 등) 간의 상호 작용을 조정하고 필요한 경우 도메인 패키지를 확장하는 데 도움이되었습니다. 서비스 계층은 또한 트랜잭션 경계를 정의했다 (Spring을 통해). 서비스는 DTO 또는 프리미티브를 수신 또는 방출합니다. DRY의 중단으로 많은 사람들이 그것을 싫어하지만 서비스 인터페이스와이를 사용하는 코드를 정의 할 때 정직하게 생각하고 있습니다. 나중에 원격지에서도 매우 쉽게 사용할 수 있습니다.
이 접근 방식으로 우리는 꽤 작은 팀 (우리는 스크럼 팀이었습니다)과 함께 고품질의 소프트웨어를 만들 수있었습니다.
따라서 영구 도메인 객체를 믿는 사람이라고 생각해보십시오. 내 이야기가 도움이되는지 모르겠지만 공유하고 싶었습니다.
이 프레젠테이션보기 http://www.infoq.com/presentations/Clean-Model-Tim-McCarthy – MikeSW
감사합니다. 이것은 훌륭한 프리젠 테이션입니다! 지금보고있는 것 ... – HolySamosa