Temporale Datenhaltung in der Praxis mit Java

Exkurse

Exkurs: Basis-Frameworks für temporale Implementierungsbeispiele

Als Basis-Frameworks werden folgende Open-Source Java-Projekte verwendet:

  • KissMDA: Mit dem Framework lassen sich die in UML modellierten Klassen direkt als Java-Schnittstellen generieren. Eine aktuelle Dokumentation ist so stets gewährleistet.
  • Spring Framework: Spring fungiert als Basis sowohl für Context- und Dependency-Injection, als auch für die Integrationsplattform (Transaktionen, Objektspeicherung und Integrationstest).
  • Hibernate: Das ORM-Mapper-Framework kommt für die Implementierung der JPA-Spezifikation zum Einsatz.
  • Maven: Mit dem Build- und Abhängigkeitsverwaltungswerkzeug werden sämtliche Beispielprojekte gebaut.

Auf GitHub stehen sämtliche Quellcodes der Beispiele zur Verfügung.

Exkurs: Quelloffene Java-Frameworks für die temporale Datenhaltung

  • Entwurfsmuster für die Temporalität: Die Beiträge von Martin Fowler dienen als Basis für die Umsetzung der objektorientierten Temporalität.
  • Hibernate Envers: Envers erweitert Hibernate um Auditing und Versionierung der persistenten Java-Objekte. Ab Version 3.5 liefert Hibernate Envers direkt mit, sodass das Modul nicht mehr separat zu installieren ist. Hibernate Envers unterstützt den Mechanismus der Temporalität mit Bearbeitungs- beziehungsweise Transaktionszeitbezug (Stufe 2). Bitemporalität unterstützt das Framework nicht direkt, weshalb der Entwickler sie selbst implementieren muss.
  • Spring Data JPA: Ein einfaches Implementieren des Repository-Musters beziehungsweise des Data Access Object (DAO) ermöglicht das Projekt Spring Data JPA. Es erweitert JPA darüber hinaus um eine Auditing- und Versionierungsfunktion. Spring Data JPA unterstützt - wie Hibernate Envers - Stufe 2 der temporalen Datenhaltung, allerdings keine Bitemporalität. Eine Integration von Hibernate Envers in Spring Data JPA für die temporale Datenhaltung bietet das Projekt Spring Data Envers.
  • DAOFusion: Die Implementierung der Bitemporalität (Stufe 3) in DAOFusion nimmt das Konzept des bitemporalen Frameworks in Java von Erwin Vervaet (Schöpfer von Spring Web Flow) zur Grundlage und fügt einige Erweiterungen hinzu. Es umfasst vergleichsweise benutzerfreundliche Schnittstellen (APIs) und bitemporale Integration für JPA.