Layered Persistenz und Datenbank
JPA-, PostgreSQL- und Flyway-Implementierung des Persistenzlayers.
Layered Persistenz und Datenbank
Die Persistenzerweiterung ersetzt die bisherigen In-Memory-Adapter nicht, sondern ergänzt echte PostgreSQL- und JPA-Adapter. Die Domain bleibt vollständig frei von JPA- und Spring-Abhängigkeiten.
Lieferumfang
| Bereich | Umsetzung |
|---|---|
| Datenbank | PostgreSQL-Schema mit zwei Flyway-Migrationen |
| Mapping | explizite JPA-Entities und Data Mapper |
| Repositories | sieben Adapter für die vorhandenen Anwendungsports |
| Konsistenz | optimistische Versionierung und pessimistische Bestandsabfrage |
| Transaktionen | TransactionRunner im Application Layer, Spring-Adapter in Persistence |
| Events | transaktionale Outbox als persistierter Versandauftrag |
| Tests | Mapper-Unit-Test und PostgreSQL-Testcontainers-Integrationstests |
Zentrale Architekturentscheidung
JPA-Entities sind keine Domain Entities. Fachobjekte behalten Konstruktoren, Invarianten und typsichere IDs. Reconstitution Factories erlauben ausschließlich das kontrollierte Wiederherstellen gespeicherten Zustands.
Transaktionsgrenze
Jeder Application Service führt seinen vollständigen Ablauf über TransactionRunner.required(...) aus. In Unit-Tests arbeitet eine direkte Implementierung; im Spring-Betrieb verwendet SpringTransactionRunner einen TransactionTemplate.
Nächster Schritt
Die Erweiterung ergänzt REST-Adapter, Fehlerabbildung, Messaging-Dispatcher und die Veröffentlichung der vorgemerkten Outbox-Ereignisse.