-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: Hibernate hashCode() equals() implementieren
PostPosted: Sun Dec 10, 2006 6:25 pm 
Newbie

Joined: Wed Nov 29, 2006 3:04 am
Posts: 3
Hallo,

ich bin noch unbedarft im Umgang mit Hibernate, habe aber eine Frage zu den im Titel genannten Methoden bezogen auf ein konkretes Beispiel.

Angenommen, ich habe folgende zwei Tabellen: Literatureintrag mit einer ID als Primary Key und die Tabelle Autor ebenfalls mit einem PK ID. Literatureintrag und Autor stehen in einer unidirektionalen Beziehung 1:N, also Literatureintrag -> Autor.

Somit wäre, um eine Beziehung zwischen den beiden Tabellen auszudrücken, die ID des Literatureintrages ein Fremdschlüssel-Attribut in der Tabelle Autor.

Die Eindeutigkeit eines Eintrages in der Autor-Tabelle würde über die Kombination der Schlüssel Literatureintrag-ID und z.B. Autorname (String) hergestellt werden. Diese Information wird von Hibernate, soweit ich es verstanden habe, benötigt, um z.B. eine remove()-Operation ausgehend von dem Literatureintrag-Objekt auszuführen.

Dafür muss ich aber doch die hashCode und die equals-Methoden in der Autor-Klasse überschreiben, die mit der Autor-Tabelle assoziiert ist, oder?

Und: Wenn ich zur Berechnung des HashCodes für ein Autor-Objekt das Literatureintrag-Objekt heranziehen muss, hebe ich dadurch nicht die Unidirektionalität auf?

Vielen Dank im voraus für die Antworten

Michael


Top
 Profile  
 
 Post subject:
PostPosted: Sun Dec 10, 2006 6:42 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Hallo,
wahrscheinlich funktioniert es, wenn Du den fk in den Primary key mit integrierst, aber Du schaffst Dir damit Komplexität und Abhängigkeiten.
Ich würde für Autor und Literatureintrag jeweils einen "syntetischen" PK verwenden, z.B. eine laufende Nummer. Der Autor hat in der Autortabelle, dann ein Feld lit_id, das nicht zum PK gehört.

Außerdem brauchst Du dann nicht equals und hashcode zu überschreiben.

Ich habe erst jetzt wieder ein Projekt, wo wir alte Datenstrukturen mit komplexen Primary Keys ablösen müssen. Das ist sehr unflexibel.

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject:
PostPosted: Mon Dec 11, 2006 8:00 am 
Newbie

Joined: Wed Nov 29, 2006 3:04 am
Posts: 3
Bedeutet das dann, dass wenn ich in einer Tabelle, die einen Fremdschlüssel enthält, also in meinem Fall Autor den FK von Literatureintrag, ich auf der sicheren Seite bin, sofern ich eine technische ID in der Autorentabelle hinterlege, die den einzelnen Datensatz eindeutig identifiziert?

Sprich, wenn ich in Literatureintrag folgende Methode habe:

public List<Autor> getAutor(){...}

Kann ich dann mit remove und add auf Einträgen der Liste arbeiten, ohne HashCode und equals in der Autoren-Klasse implementiert zu haben?

Danke soweit für die Hilfe.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Dec 11, 2006 5:53 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Dann kann man auch remove und add verwenden ohne equals und hashCode zu implementieren.

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.