Layered Persistenz und Datenbank

JPA-, PostgreSQL- und Flyway-Implementierung des Persistenzlayers.

Java 21PostgreSQLFlywaySpring Data JPAOfflinefähig
7
Adapter
8
Entities
2
Migrationen
Application ServiceTransactionRunnerRepository PortEvent PublisherJPA AdapterData MapperPostgreSQLFachdaten + Outbox

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.

Darstellung

Design
Text
Dichte
⌂ Cockpit