Spring+HibernateEntityManager(Spring+DDDっぽく編)
おいらは DDD っぽいのが好き。
前回は、HibernateEntityManager を使ったベタなサンプルでした。しかし、おいらは DDD っぽいのが好きなので、今回は DDD(Domain-Driven-Design)っぽい設計にしてみます。
Layered Architecture
ソースコードを、DDD の階層アーキテクチャにあわせて分離しました。maven レベルで別アーティファクトにするもしくはサブモジュールにしたほうがよいと思いつつ、メンドイのでとりあえず eclipse プロジェクトのソースフォルダレベルで分離。
プレゼンテーション層
今回は、この階層は使用しません。DB に保存するだけのサンプルなのでw
アプリケーション層
アプリケーションを構成するための層です。ドメインモデルは業務問題領域のモデルであり、ドメインモデル中の各エンティティやサービス等がアプリケーションとしてどのように構成されるかという視点は存在しません。Singleton インスタンスの作成や Unit of Work の設定やアプリケーションの初期化等、アプリケーションという視点はこの層で扱います。
- ソースフォルダは application/src
- パッケージは application
ドメイン層
業務問題領域を扱うための層です。「業務問題領域を扱うアプリケーション」という視点は全くなく、「業務問題領域そのもの」を扱うことに注意です。
- 仕様ソースフォルダは domain-api/src
- 実装ソースフォルダは domain-impl/src
- パッケージは、上記両方とも domain
links
第1回 Spring+HibernateEntityManager(HibernateEntityManager単体編)
第2回 Spring+HibernateEntityManager(とりあえずSpring編)
第3回 Spring+HibernateEntityManager(宣言的トランザクション編)
第4回 Spring+HibernateEntityManager(Spring+DDDっぽく編)
第5回 Spring+HibernateEntityManager(Spring+DDDっぽく編 その2)
第6回 Spring+HibernateEntityManager(Spring+DDDっぽく編 その3)
第7回 Spring+HibernateEntityManager(Spring+DDDっぽく編 その4)
第8回 Spring+HibernateEntityManager(@Transactionalアノテーション編)
第9回 Spring+HibernateEntityManager(@Required編)
第10回 Spring+HibernateEntityManager(XMLからの外部リソース参照編)
第11回 Spring+HibernateEntityManager(AspectJ AOP with Load-Time-Weaver編)
第12回 Spring+HibernateEntityManager(DBCPのvalidationQuery編)
第13回 Spring+HibernateEntityManager(@Resource編)
第14回 Spring+HibernateEntityManager(コンポーネント自動検出 with アノテーション編)
第15回 Spring+HibernateEntityManager(コンポーネント自動検出 without アノテーション編)