2015-08-07 15 views
13

Ich habe eine einfache Frage: warum JpaRepository ist eine Liste der Entitäten zurück, aber CrudRepository gibt Iterable von Entitäten zurück?JpaRepository vs CRUDRepository findAll

Ist es absichtlich gemacht? Ich nehme an, es liegt daran, dass CrudRepository eine allgemeinere Schnittstelle ist und es möglicherweise ein bestimmtes Repository gibt, das Iterable zurückgibt.

Es macht härter CrudRepository zu verwenden, ohne spezifische JpaRepository mit ..

Dank

+0

Ich sehe nicht, warum es schwieriger ist, können Sie ein Beispiel geben? –

+0

Angenommen, ich möchte die Größe der zurückgegebenen Elemente abrufen, im Falle von CrudRepository muss ich manuell zählen während (hasnext) counter ++, auf der Liste kann ich einfach size() aufrufen. Es gibt andere ähnliche Dinge. –

Antwort

20

Die Klasse ist CrudRepository ist Teil der und is the recommended interface to extend (siehe Oliver Gierke Antwort) unabhängig von der tatsächlichen Datenspeicher verwendet.

Der Grund CrudRepository Methoden geben Iterable und nicht List (oder Set) ist, weil some data stores allow streaming of results und einen Collection Typ verwendet für solche Speicher in einem Funktionalitätsverlust führen würde.

+0

Ja, das scheint wie eine Antwort, die ich erwartet hatte. Können Sie bitte ein Beispiel eines solchen Ladens geben? Danach werde ich die Antwort akzeptieren. Danke –

+1

Überprüfen Sie den letzten Link in meiner Antwort, wo das Spring Data-Team das Problem geklärt hat und Beispiele für Datenspeicher angegeben hat, die Streaming-Unterstützung bieten. – manish

+4

Um Bedenken zu behandeln, die Sie in Ihrer Frage erwähnt haben, können Sie immer 'Schnittstelle BaseRepository erweitert CrudRepository {@Override Liste findAll(); } '. Dies ist auch, was 'JpaRepository' tut. Auf diese Weise können Sie beim generischen 'CrudRepository' bleiben und trotzdem die gleiche Funktionalität erhalten, nach der Sie suchen (' Collection.size() ', etc.). – manish

3

JpaRepository extends PagingAndSortingRepository

und PagingAndSortingRepository extends CrudRepository.

Dies ermöglicht JpaRepository eine spezifischere Rückgabetyp Itrable zu haben, die List

+1

Danke, aber es ist keine Antwort :) Ich weiß, dass es kann, frage ich mich WARUM =) –

Verwandte Themen