Ich habe eine große Tabelle, auf die ich gerne über ein Spring Data Repository zugreifen würde.Wie behandelt man eine große Menge von Daten mit Spring Data Repositories?
Derzeit bin ich versucht, die PagingAndSortingRepository
Schnittstelle zu erweitern, aber es scheint, dass ich nur Methoden definieren können, die Listen zurückgeben, zB .:
public interface MyRepository extends
PagingAndSortingRepository<MyEntity, Integer>
{
@Query(value="SELECT * ...")
List<MyEntity> myQuery(Pageable p);
}
Auf der anderen Seite, die findAll()
Methode, die mit PagingAndSortingRepository
kehrt kommt ein Iterable
(und ich nehme an, dass die Daten nicht in den Speicher geladen werden).
Ist es möglich, benutzerdefinierte Abfragen zu definieren, die auch Iterable zurückgeben und/oder nicht alle Daten gleichzeitig in den Speicher laden?
Gibt es Alternativen zum Umgang mit großen Tischen?
'List' implementiert die' Iterable'-Schnittstelle, sodass Ihre benutzerdefinierte Abfrage-Methode ein 'Iterable' zurückgibt. – zagyi
Ich nehme an, dass Spring Data nicht alles im Speicher lädt, wenn ich findAll() verwende, bin ich falsch? Ich werde die Frage bearbeiten. –
Die [zugrunde liegende Implementierung] (https://github.com/SpringSource/spring-data-jpa/blob/master/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java#L247) ruft einfach eine Liste ab, also ist es nicht so ausgefeilt. – zagyi