2016-10-05 9 views
7

私はdocsの春のデータを見ていて、find...Byの代わりにread...Byget...Byの方法を使用する理由を見つけられませんでした。 明確にしてください:query-methods findの違いは何ですか... By、read ... By、query ... By、and get ...春データでは?

  • このメソッドは何をしますか?
  • またはこのメソッドの目的は何ですか?
  • どのような場合に、この方法をうまく使用しますか?
  • それらの違いは何ですか?

query..Byメソッドの例を書くことができますか?

+1

。これらは、異なる開発者がアクセサメソッドの名前付け方法を異なるように設定できるため、個々の設定に合わせてオプションとして提供されています。 「Foo findByName(String name)」、「Foo getByName(String name)」、「Foo queryByName(String name)」、および「Foo readByName(String name)」はすべて同等です - 名前が一致する 'Foo'値は 'name'パラメータとして渡されます。 – manish

答えて

9

他のサブプロジェクトについてはわかりませんが、Spring Data JPA(1.10.2)の場合、これらのメソッドはエイリアスとして動作します。各メソッド呼び出しは、同一の基準照会(および同一のSQL照会)を生成する。

内部的には、これらの接頭辞の間に区別はありません。のみのクエリパターンマッチングのために使われています:

private static final String QUERY_PATTERN = "find|read|get|query|stream"; 

https://github.com/spring-projects/spring-data-commons/blob/8bc022ebd7097b921ae1ef6c87f0ae9fc05bba5f/src/main/java/org/springframework/data/repository/query/parser/PartTree.java#L54

同じアプローチがremove...Bydelete...By対法に使用されています。これらの4つのアプローチの違いはありません

private static final String DELETE_PATTERN = "delete|remove";