Beziehungsfrage Datenbanken

mavinatic

Bekanntes Mitglied
Hallo Community,

ich bin immernoch an meinem JEE Trainingsprojekt. Zwar geht es hier mal wieder um die Beziehung zwischen beiden Objekten. Und die Hibernate Annotation.

Ich habe eine Klasse User, welches die Member-Variable "role" besitzt.

1x [USER] ---besitzt----> 1x [ROLE]
Die Annotation die bei der User-Klasse sein müsste ist doch @OneToMany(class=Role.class). Aber welche Annotation kommt auf der anderen Seite hin bei der Klasse Role?

Ein User besitzt eine Rolle, jedoch kann eine Rolle von einem anderen Benutzer auch benutzt werden.

Gruß
 

JimPanse

Bekanntes Mitglied
N

nillehammer

Gast
Erstmal wäre die Frage, ob auf Objektebene die Rolle überhaupt die User kennen muss, denen sie zugewiesen ist. Es ist normalerweise nicht nötig, das in den Entities zu mappen. Wenn man alle User mit bestimmter Rolle wissen will, kann man sich eine entsprechende Query schreiben und über eine DAO-Methode zur Verfügung stellen.

Davon mal ab ist JimPanse's Mapping aber nicht korrekt.
Code:
@ManyToMany
wird bei m:n-Beziehungen benutzt. Wir haben hier aber eine 1:n-Beziehung. Für diese wird die Paarung @OneToMany/@ManyToOne benutzt. Der korrekte Code für Role wäre also:
Java:
public class Role{
@OneToMany
List<User>users;
}
Für weitergehende Infos zum Mapping von Collections mit JPA siehe z.B. hier: Chapter*2.*Mapping Entities

P.S. Und noch ein paar Anmerkungen zum Code:
- Variablen besser private machen und setter/getter dafür schreiben
- Ist List wirklich nötig? Hat zwei Nachteile: Es muss eine Spalte für den Listindex mitgeschleift werden und List verhindert keine Doppelungen, also evtl besser Set
- Es gibt lange Diskussionen, ob man die Annotationen besser auf Variablen oder Gettern macht. Ich finde Getter besser, weil diese ggf in Subklassen überschrieben und um weiter Annotationen ergänzt werden können. Kein Musss, aber kannst ja mal drüber nachdenken.
 
Zuletzt bearbeitet von einem Moderator:

JimPanse

Bekanntes Mitglied
Java:
public class User{
@ManyToOne
Role role;
}

Java:
public class Role{
@ManyToMany
List<User>users;
}

Man möge mir verzeihen, hatte mich verschrieben, sollte :

Java:
public class Role{
@OneToMany
List<User>users;
}

sein bzw. wäre @OneToMany(mappedBy="role") korrekt.
 
N

nillehammer

Gast
JimPanse hat gesagt.:
Man möge mir verzeihen, hatte mich verschrieben, sollte : [...]
Kein Prob. Danke, dass Du nicht Deinen Originalpost verändert hast, sonst hätte meiner irgendwie ziemlich doof ausgesehen :D
JimPanse hat gesagt.:
sein bzw. wäre @OneToMany(mappedBy="role") korrekt.
Da möge man mir jetzt verzeihen. Ohne das "mappedBy" geht es zwar auch, aber so ist es (aus mehreren Gründen) auf jeden Fall besser.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
R Datenbanken erstellen Datenbankprogrammierung 3
I Hilfe zu Multidimensionalen Datenbanken Datenbankprogrammierung 1
D Java Datenbanken Datenbankprogrammierung 1
T Lagerprogramm mit Datenbanken Datenbankprogrammierung 21
K Verschiedene Datenbanken - Was sollte ich lernen? Datenbankprogrammierung 11
M SQLite Zwei Datenbanken synchronisieren Datenbankprogrammierung 8
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
F MySQL+ Netbeans: Datenbanken mit Automatisch generierten Entity Classes get und set Datenbankprogrammierung 2
M Hash in Bezug auf Datenbanken unklar Datenbankprogrammierung 3
M Datenbankschema in relationalen Datenbanken Datenbankprogrammierung 3
Ananaskirsche Verschlüsselung von Datenbanken Datenbankprogrammierung 1
T Datenbanken-PDF Datenbankprogrammierung 15
Y Derby/JavaDB Benutzung von eingebetteten Datenbanken Datenbankprogrammierung 4
G Datenbanken in Java Datenbankprogrammierung 9
K Zwei Datenbanken miteinander auf Unterschiede vergleichen Datenbankprogrammierung 2
T 2 Tabellen aus 2 Datenbanken miteinander vergleichen Datenbankprogrammierung 6
B Datenbanken schützen vor Zugriff Datenbankprogrammierung 3
L Große Datenbanken - Designproblem Datenbankprogrammierung 3
E Zwischen Datenbanken wechseln Datenbankprogrammierung 13
L Synchronisieren von 2 Datenbanken Datenbankprogrammierung 2
T a x b x c x....n Matrizen in Datenbanken Datenbankprogrammierung 5
P DatenBanken mit Netbeans erstellen Datenbankprogrammierung 17
K Grundfragen zu Datenbanken Datenbankprogrammierung 28
H Rechnen in Datenbanken - JDBC Mittel der Wahl? Datenbankprogrammierung 32
J Unterstützung für verschiedene Datenbanken Datenbankprogrammierung 2
T MySQL Auflistung aller Datenbanken??? Datenbankprogrammierung 9
J In viele verschiedene Datenbanken einfügen Datenbankprogrammierung 3
C MySQL Hibernate mit 2 Datenbanken Datenbankprogrammierung 12
V Hibernate mit 2 Datenbanken Datenbankprogrammierung 3
W MySQL Datenbanken auslesen Datenbankprogrammierung 3
M prinzipielle Frage zu Datenbanken und jars ... Datenbankprogrammierung 2
R PreparedStatement mit verschiedenen Datenbanken Datenbankprogrammierung 2
brainray Bei MySQL alle Datenbanken eines Servers abfragen Datenbankprogrammierung 3
R 1 Programm, 2 Datenbanken Datenbankprogrammierung 15
S Standard für Datenbanken Datenbankprogrammierung 3
R Datenbanken, Tabellen normalisieren. Datenbankprogrammierung 1
G Datenbanken abgleichen Datenbankprogrammierung 4
P Insert into mit zwei Datenbanken Datenbankprogrammierung 3
G Effektive Methode zum durchsuchen von SQL-Datenbanken Datenbankprogrammierung 7
M Datenbanken synchronisieren Datenbankprogrammierung 2
P Datenbanken auswahl, anforderungen Datenbankprogrammierung 29
K Daten in Datenbanken einfügen Datenbankprogrammierung 6
G H2: Erstellen von Datenbanken verhindern Datenbankprogrammierung 2
Y Datenbanken Datenbankprogrammierung 6
M Maximale Kapazität von Datenbanken Datenbankprogrammierung 2
S Objektorientierte Datenbanken Datenbankprogrammierung 4
F Zwischen Datenbanken wählen auf SQL-Server Datenbankprogrammierung 4
G Umlaut-Problem mit Firebird Datenbanken Datenbankprogrammierung 8
I Datenbanken mit MySQL einrichten Datenbankprogrammierung 11
G Step-by-Step Anleitung für Datenbanken Datenbankprogrammierung 3
N Abfrage über zwei Datenbanken Datenbankprogrammierung 9
M Treiber für mysql Datenbanken Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben