//

Spring Data – Teil 1: Commons

21.12.2011 | 2 Minuten Lesezeit

Mit dem Spring Data Projekt verfolgt SpringSource das Ziel, ein gemeinsames API sowohl für den Zugriff auf NoSQL -Datastores als auch altbewährte relationale Datenbanken bereitzustellen. Spring Data ist ein Mantelprojekt, das neben allgemeinen Aspekten – wie etwa dem Blättern in großen Datenmengen – Unterprojekte für die verschiedenen Arten von Persistenz-Technologien umfasst.

In einer losen Serie von Blog-Einträgen möchte ich jeweils ausgewählte Aspekte aus den einzelnen Data-Projekten vorstellen. Beginnen möchte ich mit

Spring Data Commons

Das Projekt Spring Data Commons stellt allgemeine Infrastruktur und Interfaces für die anderen, konkreteren Data-Projekte zur Verfügung. Unabhängig von der Art des Datastores unterstützt Spring Data mit einem einheitlichen API folgende Aspekte:

  • Ausführen von CRUD (create, read, update, delete) Operationen
  • Sortierung
  • Seitenweises Lesen (Pagination)


Von zentraler Bedeutung sind dabei die Interfaces im Package org.springframework.data.repository:

Bei dem Interface Repository handelt es sich lediglich um ein Marker-Interface, interessanter wird es beim CrudRepository. Dieses definiert einheitlich die allseits beliebten CRUD-Operationen (Create, Read, Update und Delete). Eine weitere Spezialisierung PagingAndSortingRepository bietet allgemeine Finder-Methoden an, die Sortierung und Blättern unterstützen. Allen Interfaces ist gemein, dass sie mittels Generics eine Typisierung der Entität sowie des Suchschlüssels vornehmen.

Für die folgenden Beispiele soll User unser persistentes Domain-Objekt sein, dass einen Schlüssel vom Typ String hat.

Sortierung

Unser User-Repository definieren wir wie folgt …

1public interface UserRepository extends PagingAndSortingRepository<User, String> {
2}
3

… und verwenden es anschließend, um nach den zwei Attributen id und fullName aufsteigend bzw. absteigend zu suchen:

1@Autowired UserRepository userRepo;
2...
3public Iterable<User> getSortedUsers() {
4    return userRepo.findAll( new Sort(
5         new Sort.Order(Sort.Direction.ASC, "id"),
6         new Sort.Order(Sort.Direction.DESC, "fullName")
7         )
8    );
9}
10

Pagination

Auch das Blättern gestaltet sich sehr komfortabel:

1Page<User> page = userRepo.findAll( new PageRequest(2, 20) );
2List<User> users = page.getContent();	 
3...
4

Im obigen Beispiel verwenden wir eine Blockgröße von 20 und fragen den 2. Block an. Ein Page-Objekt stellt neben den eigentlichen Suchergebnissen auch Informationen über Gesamtanzahl an Treffern, aktueller Seite und einigem mehr bereit.

Ausblick

Im Rahmen dieser Blog-Serie werden wir auf konkrete Spring Data Projekte wie Spring Data JPA und Spring Data MongoDB in Hinblick auf Konfiguration, Verwendung des APIs sowie Spezifika der Subprojekte eingehen.

Persist you must, Master Yoda says.

Beitrag teilen

Gefällt mir

0

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen

Wir helfen Deinem Unternehmen

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.