Polymorphie Fragen zur Annotations von Persistenz

Chebura

Mitglied
Hallo, ich habe angefangen mich mit der Persistenz zu beschäftigen.
Dabei entdecke ich einige Annotations, die mich etwas verwirren.
Und zwar:

Beziehung zwischen: Kunde-----Vertrag ist eine 1:n Beziehung, also ein Kunde kann mehrere Verträge haben.

DB-Ansicht:

Tabelle Kunde (id_kunde ,name, vorname)
Tabelle Vertrag (id, Firma, pk_id_kunde)

D.h. Ich setzte nen Fremdschlüssel von Kunden bei der Tabelle Vertrag
Das möchte ich nun als Persistenz abbilden.

Dann habe ich 2 Klassen:

Java:
@Entity
public class Client implements Serializable {

    @OneToMany(mappedBy="cClient", orphanRemoval=true)
    private Set<Contract> cContract;

}

1. Also hier habe ich dann eine bidiriktionale Beziehung (auf der Java-Ebene).
Macht der Parameter "mappedBy" deutlich, dass cClient der Fremdschlüssel in der Tabelle Contract ist?
Oder hat das mit der Fremdschlüsselvergabe nix zu tun?
Wie macht man das dann??

2. Der zweite Parameter "orphanRemoval" löscht den Datensatz. Ist damit die referenzielle Intergrität gemeint?
oder wird die referenzielle Intergrität mit dem Parameter: cascade = CascadeType.ALL
festgelegt??


Java:
public class Contract implements Serializable {

    @ManyToOne
    private Client cClient;

}

Habe ich diese 1:n beziehung richtig implementiert?
Was meint man eigneltich mit einer unidirktionalen Beziehung???

Danke für jeden Tipp.
 
N

nillehammer

Gast
Zunächst, Dein Mapping ist so, wie man es machen würde.

1. Also hier habe ich dann eine bidiriktionale Beziehung (auf der Java-Ebene).
Macht der Parameter "mappedBy" deutlich, dass cClient der Fremdschlüssel in der Tabelle Contract ist?
Oder hat das mit der Fremdschlüsselvergabe nix zu tun?
Wie macht man das dann??
Ja, kann man so sagen. Wenn man das mappedBy weglassen würde, würde es zu einer für eine 1:n-Beziehung eigentlich unnötigen Beziehungstabelle führen.
2. Der zweite Parameter "orphanRemoval" löscht den Datensatz. Ist damit die referenzielle Intergrität gemeint?
oder wird die referenzielle Intergrität mit dem Parameter: cascade = CascadeType.ALL
festgelegt??
orphanRemoval sorgt dafür, dass keine verwaisten Contracts in der DB rumliegen, wenn ein Client gelöscht wird. Insofern sichert das die referenzielle Integrität. "cascade = CascadeType.ALL" meint keine DB-Level Cascades, insofern gehört das nicht zur referenziellen Integrität. Es meint Cascades auf Java-Ebene. Sprich, wenn Du in das Set einen neuen Contract mit add hinzufügst, und dann den Client speicherst, wird automatisch das INSERT/UPDATE für den Contract mit abgesetzt. Du musst es also nicht extra selbst aufrufen. Gleiches gilt für ein delete aus dem Set.
Was meint man eigneltich mit einer unidirktionalen Beziehung???
Stellt Dir vor, du hast auf Seite des Contracts noch Deine Client-Variable, aber auf Seiten des Clients entfernst Du das Set. Dann kannst Du die Beziehung nur noch von einer Richtung aus (unidirektional) navigieren, nämlich vom Contract zum Client. Umgekehrt geht es dann (auf Objektebene) nicht mehr.

Für Anwendungsfälle, wie dem Deinen hier mache ich auf Ebene der Entities die Beziehungen immer nur noch unidirektional. Wenn ich alle Verträge eines Clienten haben will, schreibe ich mir eine Query und stelle sie über eine DAO-Methode
Code:
Set/List<Contract> findByClient(Client client)
zur Verfügung.
 
Zuletzt bearbeitet von einem Moderator:

Chebura

Mitglied
orphanRemoval sorgt dafür, dass keine verwaisten Contracts in der DB rumliegen, wenn ein Client gelöscht wird. Insofern sichert das die referenzielle Integrität.
Ja, dann wird aus der Client-Tabelle der Kunde gelöscht, aber auch überall in den anderen Tabellen die Datensätze, wo diese ID von dem eben gelöschten Kunden als Fremdschlüssel auftaucht?


Es meint Cascades auf Java-Ebene. Sprich, wenn Du in das Set einen neuen Contract mit add hinzufügst, und dann den Client speicherst, wird automatisch das INSERT/UPDATE für den Contract mit abgesetzt

Wenn ich beispielsweise nen Eintrag im Client-Set hinzufüge, gehe dann "auf die andere Seite" der beziehung und lösche da einen Eintrag, wird das von beiden Seiten korrekt verarbeitet? ohne, dass ich auf beiden Seiten einzeln speichern muss? also mit der Einstellung .ALL ?

Stellt Dir vor, du hast auf Seite des Contracts noch Deine Client-Variable, aber auf Seiten des Clients entfernst Du das Set

Mit "entfernst" meinst du das auf der Java-Ebene? dann ist "Set" zwar leer, abe die eben gelöschten Einträge sind in der DB noch da...oder?

Danke für die Info :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Fragen zu Testabdeckungs-Metriken Allgemeine Java-Themen 4
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
K BlueJ - Fragen zu dem Spiel Pacman (Nachprogrammieren) Allgemeine Java-Themen 141
V Ich hätte 2 Fragen Allgemeine Java-Themen 5
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
H Fragen zur Kraken Api Allgemeine Java-Themen 1
nonickatall Klassen Grundsätzliche Fragen zu geplanter Programmstruktur Allgemeine Java-Themen 5
W Ein paar Fragen zu .properties und .css Allgemeine Java-Themen 6
W Mal ein paar generelle Fragen zu InputStream und OutputStream Allgemeine Java-Themen 4
X Fragen zur Javamail API und Gmail Allgemeine Java-Themen 4
T Fragen bezgl. Lambdas Allgemeine Java-Themen 20
X Collections Fragen zu gleichen Elementen in TreeSet Allgemeine Java-Themen 35
A Neuerungen in Java 8 StreamAPI- Paar fragen Allgemeine Java-Themen 4
temi Fragen zur Software-Architektur Allgemeine Java-Themen 123
M Diverse Design-Fragen Allgemeine Java-Themen 6
J 2 Fragen zur Vererbung Allgemeine Java-Themen 5
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
M Fragen beantworten über Textfeldeingabe Allgemeine Java-Themen 5
D Grundsätzliche Fragen zum Heap Space Allgemeine Java-Themen 12
J Allgemeine Fragen zu Vererbung Allgemeine Java-Themen 1
M Allgemeine Fragen meinerseits Allgemeine Java-Themen 4
V Wie kann ich die Fragen mit den anderen Klassen verbinden? Allgemeine Java-Themen 1
J Fragen zu generischer doppelt verketteter Liste (bei fehlendem Grundverständnis) Allgemeine Java-Themen 1
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
T Fragen zum Thread-Thema Allgemeine Java-Themen 4
2 2 Klein Fragen Allgemeine Java-Themen 7
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
T Fragen zum Thread-Thema Allgemeine Java-Themen 9
A Java Theorie-Fragen Allgemeine Java-Themen 7
K Java QUIZ-Spiel Fragen und Antworten generieren?! Allgemeine Java-Themen 5
R Socket Fragen zu UDP Allgemeine Java-Themen 1
B Noob-Fragen zu Tablets und PC kompatiblität... Allgemeine Java-Themen 6
D Ein paar allgemeine Fragen zu Java Allgemeine Java-Themen 19
L Fragen für Facharbeit: Analyse von Strings in Java Allgemeine Java-Themen 4
R Fragen zu Server + UI Allgemeine Java-Themen 2
U Vier Fragen zu Java Allgemeine Java-Themen 2
H MediaManager Fragen/Probleme Allgemeine Java-Themen 6
D Fragen zum erstellen einer ausführbaren Jar Datei Allgemeine Java-Themen 3
O Fragen über Fragen - Bei Änderung XML-Datei -> Anpassung GUI Allgemeine Java-Themen 7
StrikeTom Java Performance Fragen Allgemeine Java-Themen 5
Luk10 Fragen zum ByteBuffer (lwjgl - icons) Allgemeine Java-Themen 2
F Akkumulator Hough-Transformation offene Fragen Allgemeine Java-Themen 4
Luk10 Fragen zu Naming-Conventions Allgemeine Java-Themen 5
Z Einige Fragen Allgemeine Java-Themen 10
T OOP Einige Fragen zu UML-Klassendiagrammen Allgemeine Java-Themen 6
G Einige Fragen zu ResourceBundles Allgemeine Java-Themen 2
S Fragen zu verschiedenen Themen vom JCreator Allgemeine Java-Themen 2
DStrohma Grundsätzliche Fragen zum Aufbau eines komplexeren Programmes Allgemeine Java-Themen 8
Semox Grapheneditor - Allgemeine Fragen zum Logikdesign Allgemeine Java-Themen 3
O kleine Fragen eines Anfängers Allgemeine Java-Themen 2
X Executor fragen ob fertig Allgemeine Java-Themen 13
nrg Swing 2 Fragen zu Swing/AWT Allgemeine Java-Themen 7
K Reflections Fragen Allgemeine Java-Themen 7
S Fragen zum SCJD-Zertifikat Allgemeine Java-Themen 2
M Backend Entwicklung - Konzept fragen Allgemeine Java-Themen 3
E Fragen zu Scala Allgemeine Java-Themen 11
Daniel_L Fragen zu RegEx und URL umwandeln Allgemeine Java-Themen 4
J Diverse Fragen bezüglich Jasper Allgemeine Java-Themen 3
S Fragen zum ShutdownHook Allgemeine Java-Themen 7
V Fragen zu einem Java Browser Allgemeine Java-Themen 7
G Fragen zum eigenen Scheduler Allgemeine Java-Themen 4
M Drag and Drop: 3 Fragen Allgemeine Java-Themen 3
L Einige Fragen zu Java Allgemeine Java-Themen 9
F Linguistische Fragen zu Javadoc bzw. Englisch Allgemeine Java-Themen 4
E Einfache Fragen zu Dateien Allgemeine Java-Themen 7
E Thread Fragen in Verbindung mit Swing Allgemeine Java-Themen 4
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
X Einige Fragen zu Serialisierung Allgemeine Java-Themen 2
H Java Multiplicoice Test (10 Fragen) Allgemeine Java-Themen 11
J Viele Fragen. =) Hoffentlich könnt ihr helfen Allgemeine Java-Themen 9
D Grundsätzliche Fragen zur Grafikdarstellung in Spielen Allgemeine Java-Themen 2
J 2 Fragen zu JMF und eine Rechtsfrage Allgemeine Java-Themen 3
S Viele Fragen eines Umsteigers (von .NET) Allgemeine Java-Themen 6
C LinkedList Fragen Allgemeine Java-Themen 7
P Fragen zur JBuilder und den kosten. Allgemeine Java-Themen 7
reibi JVM fragen welche Apps geladen sind Allgemeine Java-Themen 7
I Fragen zum Internetseiten Einlesen/Auswerten Allgemeine Java-Themen 5
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
S 2 Fragen allgemeine fragen zu final und interface Allgemeine Java-Themen 13
M ein paar fragen über JBoss und Catalina Allgemeine Java-Themen 7
D Allgemeine Fragen zum Speichern Allgemeine Java-Themen 3
F allgemeine Fragen zu Java Allgemeine Java-Themen 9
S Fragen zu 4 speziellen Listen Allgemeine Java-Themen 4
U JFrame, JOptionPane - vor dem Schließen Benutzer fragen Allgemeine Java-Themen 10
I zwei simple fragen Allgemeine Java-Themen 22
G 2 Fragen Allgemeine Java-Themen 7
G Fragen zu ausführbaren JAR Files Allgemeine Java-Themen 23
G Fragen zu JTextField bzw. JTextArea Allgemeine Java-Themen 2
J 5 Fragen. Allgemeine Java-Themen 2
P Tausend Fragen... Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
hdi Zu Reflections & Annotations Allgemeine Java-Themen 10
L Annotations um Gültigkeit von Attributen zu definieren? Allgemeine Java-Themen 4
K Annotations der aufrufenden Methode ermitteln Allgemeine Java-Themen 11
ruutaiokwu junit mit annotations geht nicht? Allgemeine Java-Themen 5
N Method-Annotations in aufgerufener Methode auswerten Allgemeine Java-Themen 2
W Annotations selbst erstellen und auswerten Allgemeine Java-Themen 4
dunhillone Mittels Annotations Methoden "erweitern"? Allgemeine Java-Themen 11
V Reflection - Field-Instanz und Annotations Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben