0

初めての DDD プロジェクトを開始しようとしていますが、Hibernate がポリモーフィズムをどの程度処理できるか、またその結果がどうなるか疑問に思っています。

私は、フラグステートメントが「ドメインを解放する」、「実際のオブジェクト指向設計を作成する」などのようなものであるにもかかわらず、ここでドメインを表現するために抽象化をまったく使用していないことに気付きました。これは、例を非常に単純にしたかったためでしょうか、それとも何らかの理由でそれができないのでしょうか?

Hibernate リポジトリはインターフェイス レベルでは使用できないことを知っています。それらは抽象クラスレベルで使用できると思いますよね?しかし、そのようなシナリオはどうですか:

抽象ドメインオブジェクトを含むドメインオブジェクトAがあります(インターフェース:() Bにすることはできません。 Bにはいくつかの実装があります。 Aには「 addSomeB」メソッドのようなものがあります。Bの混合サブクラスをそこに置きたいです。次に、そのようなクラスを保存して正しく取得できますか?

おそらく、Hibernate の制限のために OO 設計が単純に不可能ないくつかの明白なシナリオがあるでしょうか?

ありがとう!

4

1 に答える 1

0

Hibernate は継承をサポートしています。http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch10.html を参照してください

あなたとは反対に、フレームワーク内の優れた機能の 1 つとして継承をマークする必要があります。1 つの基本クラス (実際にはインターフェイス) と、おそらく 10 の異なる実装を展開継承ツリー内に持つ 1 つの集約を正常に永続化できました。

Hibernate リポジトリをインターフェイス レベルで使用できないことはわかっています。それらは抽象クラスレベルで使用できると思いますよね?しかし、そのようなシナリオはどうですか:

ドメイン モデルで確実にインターフェイスを使用できます。やりました。インターフェイスを含む 1 つの jar と、実装を含む複数の jar がありました。

明らかに、インターフェイスには実際の値/コンテンツはありませんが、エンティティ自体 (実装) には (コンテンツが保持されているため) 存在するため、マッピング内で実装をマップする必要があります。正常に動作します。リポジトリ内であっても、サービス内で引き続きインターフェイスを使用できます-メソッド署名で使用するだけです。

于 2013-08-23T06:51:14.050 に答える