Hibernate

Hibernate ist ein Object Relational Mapper. Die Bibliothek erlaubt es, Java Objekte (in der Regel Java Beans) in einer relationalen Datenbank zu speichern. Dazu werden in einer XML-Datei (Hibernate Mapping) Klassen auf Tabellen und Properties auf Spalten abgebildet.


Equals und HashCode

Essentiell ist es, dass für die mit Hibernate verwalteten Objekte die equals und hashCode Methoden korrekt implementiert werden. Die equals Methode muss folgende Eigenschaften haben:

• reflexiv (d.h. obj.equals(obj) == true),
• symmetrisch (d.h. obj1.equals(obj2) == obj2.equals(obj1))
• transitiv (d.h. wenn obj1.equals(obj2) && obj2.equals(obj3), dann obj1.equals(obj3) == true)
• konsistent (mehrere Aufrufe von equals mit unveränderten Objekten haben das gleiche Resultat).

Für die hashCode Methode muss die folgende Aussage gelten:

• wenn obj1.equals(obj2), dann obj1.hashCode() == obj2.hashCode()


Session

IO-Operationen werden über das Session-Objekt ausgelöst:

• Session.save(<Object>) fügt ein neues Objekt in die Datenbank ein,
• Session.load(<Class>, <Object>) liest ein Objekt anhand des Primärschlüssels,
• Session.createQuery(<String>) erzeugt eine Abfrage,
• Session.delete(<Object>) löscht ein Objekt aus der Datenbank,
• Session.flush() speichert alle Updates an Objekten, die mit load oder einer Query gelesen und dann im Speicher verändert wurden.

Session-Objekte werden von einer SessionFactory erzeugt.

Ausgehend von einem Session-Objekt kann mit Session.beginTransaction() ein Transaction-Objekt erzeugt werden. Danach werden alle Operationen der Session innerhalb der Transaktion ausgeführt. Die Transaktion kann mit Transaction.commit() committed und mit Transaction.rollback() zurückgerollt werden.


Quelle

http://www.hibernate.org