2016-04-07 4 views
1

Angenommen, es wurde eine Criteria erstellt, die eine nicht leere Liste von Werten auswählt. Dann wird criteria.list().get(0) aufgerufen und von einer Funktion zurückgegeben. Es ist klar, dass dieses Element in der weiteren Aufrufkette existiert, aber was ist mit anderen Listenelementen? Wann werden sie veröffentlicht? Wann endet die Hibernation-Sitzung oder wann?Wann gibt Hibernate Release-Liste von Entitäten frei?

+0

Warum wählen Sie nicht nur maximal einen Datensatz? Sie sollten aus dem Speicher entfernt werden, wenn die Transaktion endet und die Entität losgelöst wird. – tak3shi

+0

Verwenden Sie eine Sitzung mit langer Laufzeit oder einen Speichercache? – tak3shi

+0

'Warum wählst du nicht nur ein Maximum von einem Datensatz aus? 'Hast du absolut recht, aber die Frage ist nicht' best practice ', sondern' wie funktioniert es? '. :) – Cherry

Antwort

0

Sie verwenden Session Unter der Annahme, und nicht StatelessSession, wird der L1-Cache unter mehreren Bedingungen gelöscht:

  • Wenn die Sitzung ist geschlossen.
  • Wenn session.clear() auf einer aktiven session Instanz aufgerufen wird.

Sie können auch klar Instanzen einer verwalteten Einheit einzeln auf einer offenen session, die durch das Bestehen der Entity-Instanz zu session.evict(Object object) die gegebenen Einheit verwaltet.

Verwandte Themen