0

多くのプログラマーによると、JPAを使用する場合はDAOレイヤーをバイパスできます。

DDDアプローチを使用している間、ドメインレイヤーは、インフラストラクチャ領域(リポジトリの実装などの外部リソースを含む)とドメイン領域(エンティティ、必要な値オブジェクト、リポジトリのインターフェイスとサービスなど)で構成されます。

したがって、DOAレイヤーがスキップされた場合、インフラストラクチャ領域は、たとえば「インフラストラクチャ」と呼ばれるパッケージ内のドメインレイヤーの一部である必要がありますか?

インフラストラクチャ部分を分離されたレイヤー(物事をよりクリーンにするための分離されたプロジェクト)に移動する必要がある場合、ドメインレイヤーとインフラストラクチャレイヤーの間の循環依存関係は受け入れられますか?実際、エンティティとインターフェイスリポジトリは共有する必要があります

それ以外の場合、ドメインとインフラストラクチャによって共有される独立したものと見なされるために、エンティティとリポジトリのインターフェイスをドメインレイヤーから分離する必要がありますか?

良い習慣は何ですか?

4

2 に答える 2

1

DAO レイヤーとインフラストラクチャ リージョン/ドメイン リージョンは同じものではありません。DAO 層は、インフラストラクチャ/ドメイン リージョンを実装するときに使用されます。

あなたのプログラマーは正しいです.JPAはDAOレイヤーです. インフラストラクチャ リージョンとドメイン リージョンは引き続き必要です。これらの 2 つのリージョン内に DAO レイヤーを実装する必要がある場合は、サイズが小さくなります。

于 2012-05-01T16:35:21.173 に答える
1

DDD では、データ アクセス オブジェクト (DAO) はリポジトリです。「DAO レイヤー」はありません。永続性はインフラストラクチャ レイヤーの一部です。

前述のとおり、リポジトリのコントラクト (インターフェイス) はドメイン レイヤーで定義され、具体的な実装はインフラストラクチャ レイヤーに存在します。

エンティティは純粋なドメイン オブジェクトであると想定されており、エンティティがどのように永続化され、他のシステムに転送されるかなどを認識していないため、ドメイン レイヤーがインフラストラクチャを参照する必要はありません。

「言い換えれば、各レイヤーは、インフラストラクチャのニーズを表す抽象インターフェースを使用します。どのインフラストラクチャを使用するかはわかりません。単に抽象インターフェースを介してニーズを示し、インフラストラクチャがそのインターフェースを実装して提供することを期待しています。必要な機能。」

http://www.artima.com/weblogs/viewpost.jsp?thread=35139

于 2012-05-02T12:54:06.973 に答える