Datenaktualisierung mit dem EJB Data Mediator Service
Eine EJB-Mediator-Anforderung ist eine zusammengesetzte EJB-Abfrage. Mit der Methode applyChanges können Sie einen aktualisierten DataGraph in die Datenquelle zurückschreiben.
Die Aktualisierung kann direkt oder mit EJB-Instanzen auf die Datenquelle angewendet werden.
Wenn Sie Änderungen mit einer EJB-Instanz anwenden, können Sie eine optionale Adapterklasse mit der Methode applyChanges angeben. Jedes geänderte Datenobjekt wird zuerst an die Adaptermethode applyChange übergeben. Der Adapter kann die Änderung selbst verarbeiten und true zurückgeben oder die Änderung durch den EJB-Mediator-Prozess verarbeiten lassen, indem er false zurückgibt.
Sie können mit dem Adapter folgende Aktionen ausführen: OCC-Logik (Optimistic Concurrency) anpassen, Änderungen zum ausschließlichen Lesen der DataGraph-Attribute verarbeiten und Änderungen verarbeiten, die eine Geschäftslogik erfordern.
Es sind zwei Varianten der Methode applyChanges verfügbar. Die erste Variante, applyChanges( DataObject), verwendet den aktualisierten DataGraph und führt SQL-Anweisungen vom Typ insert-, update und delete direkt in der Datenbank aus und umgeht dabei den EJB-Container. Die zweite Variante, applyChanges( DataObject, MediatorAdapter ), verarbeitet Aktualisierungen unter Verwendung einer EJB-Instanz oder eines Accessor. Ein Nullwert für MediatorAdapter wird unterstützt.
Wann sollte ein Adapter mit applyChanges verwendet werden?
- Verwenden Sie den Adapter mit applyChanges, wenn andere create-Methoden als create(PrimaryKey) verfügbar sind.
- Verwenden Sie den Adapter mit applyChanges, wenn Geschäftsmethoden anstelle von CMP-setter-Methoden aufgerufen werden müssen.
- Verwenden Sie den Adapter mit applyChanges, wenn eine spezielle Logik für optimistisches Caching erforderlich ist.
So funktioniert der Adapter
- Es werden neue DataObjects übergeben. Der Adapter kann das Objekt erstellen und die CMP-Felder festlegen. CMRs (Container-managed Managed Relationships), die auf noch nicht erstellte Enterprise-Beans verweisen, werden erst im Durchgang 2 erstellt.
- Es werden neue und aktualisierte DataObjects übergeben. CMRs, die in Durchgang 1 nicht erstellt wurden, können jetzt definiert werden.
- Es werden gelöschte DataObjects übergeben.