Hibernate bündig meine aktualisierte persistente Objekt beim Aufruf von session.close () - mit FlushMode.AUTO?
Wenn FlushMode.AUTO eingestellt ist, wird Hibernate flush meinem aktualisierten persistenten Objekts, wenn ich call session.close()?
Ich weiß, dass Sitzung.close() normalerweise nicht, Spülen Sie die Sitzung, aber ich bin mir nicht sicher, wie Sie Sie FlushMode.AUTO auswirkt.
Aus der Docs:
FlushMode.AUTO
Die Sitzung wird manchmal geleert, bevor die Ausführung der Abfrage, um sicherzustellen, dass Abfragen, nie wieder veralteten Zustand. Dies ist die Standard-flush-Modus.
Bedeutet dies, ich können sich auf den Ruhezustand, um zu überprüfen, meine änderungen sind gerötet manchmal, bevor meine Sitzung ist geschlossen?
Kleines code-Beispiel:
Session session = HibernateSessionFactory.getSession();
PersistedObject p = session.get(PersistedObject.class,id);
p.setSomeProperty(newValue);
session.close();
UPDATE
Nach die docs dies sind die Orte, wo die Sitzung flush (wenn AUTO verwendet wird)
- vor einigen Abfrage-Ausführungen
- von org.hibernate.Die Transaktion.commit()
- aus der Sitzung.flush()
Diese sagt nichts über die Session.close () -
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein ist es nicht, und Sie sollten verwenden Sie eine Transaktion mit gut definierten Grenzen. Zitieren Nicht-transaktionalen Zugriff auf die Daten und die auto-commit-Modus:
Bottom line: verwenden Sie die explizite Transaktion Abgrenzung.
schließen einer session wird immer flush al arbeiten an der Datenbank. Flushmode.AUTO spült die Arbeit an der Datenbank, wenn es änderungen und Sie sind quering die Tabelle mit den geänderten Datensätze.