tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
810
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    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!
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    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
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    DarthShader DarthShader ist offline Mitglied Platin
    Registriert seit
    May 2004
    Beiträge
    684
    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!
    Geändert von DarthShader (22.10.07 um 08:27 Uhr)
     

  4. #4
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Soweit ich weiß, ist das von Hibernate aus nicht möglich.

    MFG

    zEriX
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

Ähnliche Themen

  1. [MySQL] Datensatz eintragen, wenn nicht vorhanden
    Von Steusi im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 03.11.10, 15:18
  2. Datensatz löschen, wenn in einer anderen Tabelle nicht vorhanden
    Von port29 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 15.08.10, 03:16
  3. INSERT aber nur wenn Datensatz noch nicht vorhanden ist.
    Von mafin im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 17.12.08, 10:41
  4. Element in Array einfügen, wenn noch nicht vorhanden
    Von kampfspatz im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 1
    Letzter Beitrag: 29.09.04, 14:04
  5. Antworten: 4
    Letzter Beitrag: 19.07.04, 13:02