2016-12-16 12 views
2

現在、ドメイン駆動型開発(DDD)を学習しています。いくつかのチュートリアルを見て、私は古い学校のプロジェクトをSOAからDDDにモデル化したいと思っています。私は、秘書管理(学生と教授のCRUD)、教授タスク(学生のためのタスクの作成)、学生タスク(アップロードタスクソリューション)の3つの境界条件を確認しました。名前は適切に選択されていないため、これはアプリケーションの概要に過ぎません。ドメイン駆動型開発でhibernate内の複数のバインドされたコンテキスト間でエンティティを共有する

重要なのは、名前、アドレス、電子メールなどの管理とidとnameを含むprofessor-taskの1つの2つのProfessorエンティティが存在することです。

私の質問は、これをhibernateとJPAを使ってどのようにモデル化しますか?アプリケーションのすべてのエンティティを持つパッケージを作成し、JPAアノテーションで注釈を付け、必要なすべてのフィールドを持つパッケージを作成し、すべてのバインドされたコンテキストで、そのバインドされたコンテキストで必要なフィールドのみを含む他のクラスを作成することを考えました。リポジトリは、その特定のクラスからJPAエンティティにマップする必要があります。もっと良い解決策はありますか?

ありがとうございます。

+0

3つのバウンドコンテキストをすべて同じアプリケーション内にデプロイする予定ですか、それとも、それぞれ独自のデプロイ可能な、おそらくマイクロサービスと見なされますか? – Naros

+0

同じアプリケーションで、異なるパッケージまたは異なるモジュールに展開します –

+0

なぜ、各BCで個々のクラスをマッピングしないのですか? BCは技術的境界でもあり、適切なツールが選択される。 – plalx

答えて

1

制限されたコンテキスト間で永続性を共有しないでください。デザインによって分離する必要のあるものにカップリングを作成します。

「これは同じことです」という感情がある場合は、コンテキストの境界を再考してください。それらをマージする必要があるかもしれません。何かが分裂に抵抗するならば、あなたは結束を破るかもしれませんが、あなたの有界な文脈は高い結束力を持たなければなりません。

一般的に、異なる境界のあるコンテキストは、実際の生活で同じものであっても、異なる懸念を抱いています。このような場合、同じ名前のドメインオブジェクトは完全に異なって見えます。なぜなら、言葉は異なる文脈に置かれた異なる意味を持っているため、本質的に、なぜ「有界文脈」と呼ばれているのかです。

関連する問題