Neues von Spring Data

Jedem das Seine: Flexible Persistenz mit Spring Data Arora

Martin Baumgartner

Mit dem Arora-Release von Spring Data wurde eine neue gemeinsame Veröffentlichung des Spring-Data-Umbrella-Projekts freigegeben. Das Ziel des Releasezyklus liegt darin, Inkompatibilitäten durch unterschiedliche Abhängigkeiten und Versionen zwischen einzelnen Unterprojekten zu verhindern. Dieser Artikel bietet einen Überblick über die Änderungen in den letzten Versionen.

Mit dem Februar-Release von Spring Data wurden, analog zur Bennung der Sammelveröffentlichungen in der Eclipse-Welt, Releasenamen eingeführt. Das erste mit einem Codenamen versehene Release heißt Arora und ist dem zweifachen Gödel-Preis Gewinner Sanjeev Arora gewidmet.

Spring Data besteht aus mehreren Einzelmodulen und hat das Ziel, den Datenzugriff auf relationale und NoSQL-Datenbanken zu vereinfachen und zu homogenisieren. Dazu besteht das Projekt aus mehreren Einzelteilen mit datenbankspezifischem Code sowie aus einem Commons-Projekt. Mit den Integrationen für das dokumentenoriente MongoDB, dem graphenorientierten Neo4j, dem Key/Value-Store Redis und dem verteiltem System Gemfire bietet Spring Data umfangreiche Unterstützung für NoSQL-Datenbanken. Das Spring Data JPA Modul erlaubt es zudem, auch herkömmliche relationale Datenbanken anzubinden.

Auditing

Mit dem Frühlings-Release wurde das Auditing von Spring Data JPA in das Commons-Projekt verschoben und steht nun in den JPA-, MongoDB- und Neo4j-Ausprägungen von Spring Data zur Verfügung. Um Auditing-Informationen in Entitäten einzubetten, müssen diese um die benötigten Eigenschaften erweitert werden, hierfür stehen die Annotation @CreatedDate, @CreatedBy, @LastModifiedDate und @LastModifiedBy zur Verfügung. Die Created-Annotationen werden sinngemäß einmalig beim Anlegen getriggert, die LastModified-Annotationen bei jeder Änderung.

@CreatedDate DateTime createdDate;
@CreatedBy String createdBy;
@LastModifiedDate Long lastModifiedDate;
@LastModifiedBy String lastModifiedBy;

Um Auditing zu aktivieren, muss im jeweiligen Namespace ein <auditing/>-Element hinzugefügt werden. Um User-Informationen in einer Entity einzubetten, muss das Interface AuditorAware<T> implementiert und im Auditing-Tag referenziert werden. Eine Implementierung von AuditorAware bietet sich somit an, um dort etwa die Credentials von SpringSecurity abzufragen.

Um Auditing in Spring Data JPA zu verwenden, muss zusätzlich ein AuditingEntityListinger in der orm.xml der entsprechenden Persistence Unit eingebunden werden. Wird Auditing in Spring Data MongoDB verwendet, so müssen Entitäten mit Audting-Informationen ein id-Feld oder ein mit @Id annotiertes Feld beinhalten; ansonsten wird eine org.springframework.data.mapping.model.MappingException: Cannot determine IsNewStrategy for type class mongo.Entity geworfen. Möchte man in MongoDB-Entitäten jedoch weiterhin keinen eigenen künstlichen Schlüssel verwalten und sich auf die generierten ObjectIds verlassen, so muss zumindest ein ObejctId-Feld in der Entity hinzugefügt werden.

 @Id private ObjectId id; 
Geschrieben von
Martin Baumgartner
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.