2016-08-18 3 views
0

Ich habe gerade angefangen, Hibernate zu lernen, aber basierend auf dem gelesenen Handbuch scheint der folgende Code Auto-Commit zu verwenden, da commit() nicht explizit aufgerufen wird. Alle Beispiele, die ich gefunden habe here zeigen Verwendung von commit(). Da ich gerade lerne wollte ich eine Bestätigung von der Gemeinde bekommen, dass ich den richtigen Weg dachte.Hibernate AutoCommit Beispiel in Java

this.session = HibernateUtil.getSessionFactory().getCurrentSession();  
Transaction tx = session.beginTransaction(); 
session.clear(); 
entityReturned = (MultipleKeyTable) session.get(MultipleKeyTable.class, entityId); 
session.close(); 

bearbeiten ich, dass die hibernate.connection.autocommit erwähnt haben sollte, ist nicht in Config definiert, und ich glaube, dass standardmäßig auf true gesetzt wird.

Bearbeiten Ich war falsch hibernate.connection.autocommit ist standardmäßig auf false festgelegt. Danke Apostolos.

Antwort

0

Sie können über hibernate.connection.autocommit Eigenschaft

bei Hibernate die Autocommitmodus Setup lesen Sie bitte the configuration documentation

Basierend auf Ihre Frage aktualisiert, Sie sind autocommit nicht verwenden, da Sie die autocommit in Ihrer Konfiguration angeben abgepfiffen. Sie machen auch eine , so dass Sie nicht sehen, ob etwas in Ihrer Datenbank passiert. Nehmen Sie einige Änderungen vor, speichern Sie sie und überprüfen Sie sie erneut. Sie müssen Ihre Transaktion bestätigen, um die Änderungen zu speichern, oder autocommit = true in Ihren Eigenschaften definieren.

+0

Die 'hibernate.connection.autocommit' Eigenschaft, falls nicht definiert, wird auf True gesetzt (von dem, was ich gelesen habe). An diesem Punkt kann ich das nicht wirklich ändern. Ich versuche zu verstehen, ob der Code, den ich gepostet habe, Autocommit verwendet. Wenn es ist, muss ich meinen Code abgrenzen, um das Commit explizit zu behandeln, da ich Autocommit nicht verwenden möchte. – Hodglem

+0

Standardmäßig ist es auf "false" gesetzt und es ist nicht empfehlenswert, es auf "true" zu setzen. Um zu sehen, ob Autocommit aktiviert ist, machen Sie bitte eine Aktion (Einfügen/Aktualisieren/Löschen) und sehen Sie sich die Ergebnisse an. In diesem Beispiel lesen Sie nur eine Zeile. Ich bin mir aber ziemlich sicher, dass beim Start von Hibernate protokolliert wird, welcher Autocommit-Wert verwendet wird. – Apostolos

+0

Wenn Sie Ihre Frage also aktualisiert haben, verwenden Sie nicht Autocommit, da Sie den Autocommit in Ihrer Konfiguration nicht angegeben haben. Sie machen auch eine Select-Abfrage, so dass Sie nicht sehen, ob etw in Ihrer Datenbank passiert. Nehmen Sie einige Änderungen vor, speichern Sie sie und überprüfen Sie sie erneut. – Apostolos