EJB Persistenz mit Java SE (3. Teil)

Soweit zu den Entities. Nun soll betrachtet werden, wie diese manipuliert werden. Dieses Beispiel ist auf die Java Standard Edition abgestimmt, so dass wie in den vorigen Kapiteln eine Manager-Klasse erzeugt wird und der EJB/JPA-Layer aus dieser Klasse instanziiert werden kann. In diesem Fall ist es die Klasse LicManStore.java, die erzeugt werden soll.

Der Konstruktor weist einen entscheidenden Unterschied zu den bisherigen Beispielen auf: die Verwendung von PersistenceContextType.EXTENDED. Als Voreinstellung werden EntityManager mit PersistenceContextType TRANSACTION erzeugt. Dies bedeutet, dass Entities nur dann verwaltet werden, wenn eine aktive Transaktion ausgeführt wird. Ist die Transaktion beendet, wird die Entity vom EntityManager entkoppelt, der nun verworfen werden kann. Mit dem Typ EXTENDED wird festgelegt, dass die Entkopplung nicht stattfindet, so dass die Entities auch nach der Transaktion weiter verwaltet werden. Damit muss man sich zum Beispiel keine Gedanken machen, wenn Sammlungen verzögert abgerufen werden, dies kann der EntityManager ausführen. Man muss immer noch die EntityTransaction erhalten, wenn Entities persistiert werden, ein Update/Merge oder ein Entfernen aus der Datenbank stattfinden sollen. Wenn etwa eine neue Instanz von Application zu sichern ist:

Schaut man in den Quellcode von LicManStore, sieht man nur Speichern, Update und Löschen für Application, Speichern und Löschen für User. License und Version enthalten überhaupt keine Methoden. Sie wurden nicht vergessen, sondern sind nicht notwendig. Die Kaskadierung wurde ja auf die Beziehungen zwischen Applikation und Version und Licence gesetzt. Das hat zur Folge, dass nur ein Update auf Application erfolgen muss und die erforderlichen Operationen für Version und Licence damit erledigt sind. Schaut man in den Quellcode von Controller.java, sieht man dies in Aktion. Nun soll betrachtet werden, wie eine neue Anwendung angelegt wird:

Hier finden sich keine Besonderheiten. Die Methode populateApplications liest alle Anwendungen ein und füllt die Liste im UI, anschließend wird die neu persistierte Anwendung in der Liste ausgewählt. Nun wird das Hinzufügen einer neuen Version zu den Anwendungen näher betrachtet. currentApplication ist die aktuell ausgewählte Instanz von Application, die Methode wird mit einem String für die neue Versionsbezeichnung aufgerufen:

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Digitale Produkte „cyberfit“ machen

Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.

3 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…

3 Tagen ago

Apple schließt Zero-Day-Lücken in iOS, iPadOS und macOS

Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…

3 Tagen ago

Gefährliche Anzeigen für Passwortmanager Bitwarden verbreiten Malware

Die Hintermänner haben es unter anderem auf Daten von Facebook-Geschäftskonten abgesehen. Opfer werden über angebliche…

4 Tagen ago

Public Cloud: Gartner erwartet 2025 weltweite Ausgaben von 723 Milliarden Dollar

Bis 2027 werden 90 Prozent der Unternehmen eine Hybrid-Cloud-Strategie umsetzen.

4 Tagen ago

iPhone 15 ist bestverkauftes Smartphone im dritten Quartal

Apple belegt in der Statistik von Counterpoint die ersten drei Plätze. Samsungs Galaxy S24 schafft…

4 Tagen ago