2017-03-16 27 views
2

DAOレイヤでJava Genericsを使用していることを読んで、これを春のデータリポジトリに適用することは疑いがあります。私が意味する、春のデータリポジトリで、あなたはこのようなものがあります:春のデータリポジトリとDAO Javaジェネリック

public interface OrderRepository extends CrudRepository<Order,OrderPK>{ 

    } 

をしかし、私は他の10個のエンティティを持っている場合、私はそうでCRUD操作を実行するには、上記のような10個のインターフェイスを作成し、しなければならないと、私はこれを考えます非常にスケーラブルではありません。 Java GenericsとDAOは、1つのインタフェースと1つの実装を作成し、これをエンティティに再利用しますが、Springデータリポジトリでは各エンティティに対して1つのインタフェースを作成する必要があります。

答えて

2

本当に質問はしていません追加するだけです

これは本当ですか?もしそうなら、なぜですか?

とそれに答える:

  1. はい、これは(ほとんど)が正しいです。ほとんどの場合、エンティティごとに1つのリポジトリを作成すべきではなく、集約ルートごとに1つのリポジトリを作成する必要があるからです。

  2. を参照してください。Springデータリポジトリは、Spring Dataが知る必要があるさまざまな機能、どのエンティティが処理しているかを示します。たとえば、問合せメソッドは、メソッド名をJPAベースの問合せに変換するために、エンティティのプロパティを知る必要があります。したがって、ある時点で情報をSpringデータに渡す必要があります。また、情報を渡す必要があります。どのエンティティを集約ルートとみなすべきですか。それを行う方法は、インターフェイスを指定することです。

本当に必要ですか?まあ、一般的なCrudの機能があれば、JPAですぐにそれを得ることができます。しかし、クエリメソッド、ページネーション、簡単なネイティブクエリ、そしてはるかに多くのSpring Dataがボイラープレートコードをたくさん避けるための良い方法です。

関連する問題