Ich verwende Hibernate 3.2.6. Und mir steht eine Ausnahme bevor.
speichern Sie die vorübergehende Instanz vor dem Löschen
In meinem Code benutzen wir manchmal getSession().flush()
und irgendwann benutzen wir getHibernateTemplate().flush()
in einer Transaktion.
Könnten Sie mir bitte sagen, was ist der Unterschied zwischen diesen beiden?
HibernateTemplate ist veraltet Spring-Code aus den Tagen vor dem Frühling wurde in Annotationen als bevorzugte Methode für das Transaktionsmanagement eingeführt. Es ist kein Teil von Hibernate selbst. Der Vorlagencode abstrahierte die Mechanismen zum Erstellen, Verpflichten und Zurückrollen von Transaktionen, sodass sich der Entwickler ausschließlich auf seine Geschäftslogik konzentrieren konnte. HibernateTemplate wird nun von der Spring-Community als überflüssig betrachtet und wurde im Frühjahr vollständig von Hibernate 4 entfernt.
Aus der offiziellen Dokumentation:
HINWEIS: Ab Hibernate 3.0.1 kann transaktionaler Hibernate-Zugriffscode auch im einfachen Hibernate-Stil codiert werden. Daher sollten Sie bei neu gestarteten Projekten den standardmäßigen Hibernate3-Stil zum Codieren von Datenzugriffsobjekten basierend auf SessionFactory.getCurrentSession () verwenden.
Ihr Code ist wahrscheinlich ein Mischmasch aus Legacy-Code und gemischten Ansätzen unter den Entwicklern während des Übergangs.