EJB Persistence mit Java Standard Edition (2. Teil)

Bis jetzt sind in der Datenbank, wie zu erwarten, Personen- und Adress-Tabellen erzeugt worden. Man würde jedoch nicht unbedingt erwarten, dass es auch eine Address_Person-Tabelle gibt, die erzeugt wurde, um das residents-Set auf eine resident_id und ein address_id-Feld zu mappen. Alle Tabellen- und Feldnamen wurden von den Namen der Klassen abgeleitet. Man kann sich mit der @Table-Annotation darüber hinwegsetzen, wenn man die Einheit angibt. Zum Beispiel würde


die Adress-Klasse als eine Tabelle mit dem Namen Location persistieren. Wenn man sich das Feld in der erzeugten Datenbank anschaut, sieht man, dass die Namen der Spalten auf ähnliche Weise von den Property-Namen in der Klasse hergeleitet sind. Man kann den persistent gemachten Feldern andere Namen geben, indem man die @Column-Annotation verwendet. Wenn man in der Address-Klasse


einsetzt, wird die Eigenschaft von postcode in einer Spalte mit dem Namen postalcode persistent gemacht. Mit @Column kann man auch andere Datenbankattribute für das persistent gemachte Feld festlegen, darunter Einmaligkeit, Länge und Genauigkeit der jeweiligen Datenbankspalte.

Auch wenn man sich auf die Standardnamenserzeugung verlässt, ist diese Methode beispielsweise sinnvoll, wenn sich der erzeugte Name einer Spalte mit einem SQL-Schlüsselwort überschneidet. Wenn man etwa ein Feld mit dem Namen select hat, wird man eine Fehlermeldung erhalten, da die Datenbank fehlerhaften SQL-Code zurückgewiesen hat. Wenn man den Spaltennamen etwa in my_select ändert, umgeht man das Problem.

Die erzeugte Address_Person-Tabelle kann man entfernen, indem man der @OneToMany-Annotation in Address zum Beispiel folgenden mappedBy-Parameter hinzufügt:


Damit wird die Persistenzschicht angewiesen, das Adress-Feld von Person zu verwenden, um das residents-Set zu mappen, und es wird keine Address_Person-Tabelle erzeugt. Die Beziehung zwischen Address und Person wurde gestrafft. Durch dieses Mapping kann man nur Person mit dem Satz der Adress-Eigenschaften persistieren, und wenn man eine Adresse aufruft, wird deren residents-Set gefüllt, indem das Mapping zur Auswahl der relevanten Person-Datensätze verwendet wird. Natürlich möchte man nicht unbedingt so eine enge Verbindung zwischen Einheiten.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu EJB Persistence mit Java Standard Edition (2. Teil)

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *