Hibernate: Objekt nur persistieren, wenn Datensatz noch nicht vorhanden?

DarthShader

Erfahrenes Mitglied
Hallo,

ich habe eine Frage bezüglich Datenbanken und Hibernate:

Nehmen wir an, ich möchte mit Hibernate ein Objekt in der Datenbank persistent machen. Ein Objekt entspricht ja einem Datensatz in einer Tablle - gibt es in Hibernate eine Funktionalität, mit der ich das Objekt nur dann in die Tabelle schreibe, wenn ein entsprechender Datensatz noch nicht vorhanden ist? Wenn er schon vorhanden ist, möchte ich nur die entsprechende id (den Primärschlüssel) des Objektes gesetzt bekommen.

Damit würde ich gerne verhindern, dass viele doppelte Datensätze in der Tabelle landen.

Ist das möglich?


Danke!
 
Hallo,

wenn ich dich richtig verstanden hab möchtest du es so haben, dass wenn du ein befülltes Object hast und es in der Datenbank gibt es ein Object mit den gleichen Werten, dann soll das Object nicht mehr selbst abgespeichert werden, sondern einfach die ID in dein Object eingetragen werden, oder?

MFG

zEriX
 
Ja genau, Du hast es richtig beschrieben. Damit möchte ich verhindern, dass viele doppelte Datensätze, die sich nur in ihrem (technischen) Primärschlüssel unterscheiden, in der Tabelle stehen.

Ohne Hibernate würde man ja so vorgehen:

1. Prüfe per SQL SELECT, ob die zu speichernden Daten schon in der Tabelle stehen, und ermittlte gegebenenfalls die entsprechende id (Primärschlüssel) des vorhandenen Datensatzes.

2. Da von einer anderen Tabelle aus auf die Daten per FK verwiesen wird, setze entweder die zuvor ermittelte id ein, oder die neue id, die daraus entstanden ist, dass ein neuer Datensatz in der 1. Tabelle angelegt wurde.


Die Frage ist eben, kann man das in Hibernate automatisieren? Gibts da irgendein "Flag", eine Konstante, die man beim Persistieren angeben kann, damit Hibernate zuvor prüft, ob die Daten schon in der Tabelle vorhanden sind?


Danke!
 
Zuletzt bearbeitet:
Zurück