2010-11-27 10 views
2

Bei einer unveränderten Entität sendet Hibernatesession.update(entity) eine SQLUPDATE-Anweisung an den Datenbankserver?Aktualisiert Hibernate eine Entität, die nicht geändert wurde?

Zum Beispiel sendet Hibernate im folgenden Code eine SQL UPDATE an den Datenbankserver?

Session session = factory.openSession(); 
Person me = new Person(null, "Derek Mahar"); 
session.save(me); 
Person me2 = new Person(me.getId(), "Derek Mahar"); 
session.update(me2); 
session.flush(); 
+0

Ist das ein Quiz? – cherouvim

+0

Funktioniert Update sogar, wenn das Objekt noch an eine Sitzung angehängt ist? Die API von 'update()' sagt, dass sie eine persistente Instanz mit der gegebenen abgelösten Instanz aktualisiert. – kraftan

+0

Kraftan, ich denke du magst Recht haben. Laut der Dokumentation wird dieses Beispiel eine Ausnahme auslösen. Ich werde das Beispiel so ändern, dass es eine getrennte Instanz mit der gleichen ID wie das Original aktualisiert. –

Antwort

6

Nr Streng genommen, Hibernate keine SQL-Update auf update senden. update aktualisiert einfach das Objekt in der aktuellen Sitzung. Hibernate führt Abfragen aus, wenn die Sitzung bereinigt wird.

+0

Bozho, Sie sind richtig, aber meine Frage ging von einem Flush der Sitzung nach dem letzten Update. Meine Frage war zu diesem Punkt jedoch nicht explizit, daher habe ich das Codebeispiel so modifiziert, dass es ein explizites abschließendes 'flush()' enthält. –

+0

Meine Antwort war (und ist immer noch) "Nein" der Rest war zusätzliche Info :) – Bozho

Verwandte Themen