Offene Sitzung im Ruhezustand in Ansicht: Transaktion pro Anforderung?

Ich verwende Hibernate mit Spring auf Tomcat. Ich habe die oft erwähnten gelesen und wieder gelesenJBoss-Wiki-Seite zu dem Thema, und das war hilfreich. Aber es bleiben mir einige Fragen.

Die Idee, für jede Anfrage eine Transaktion zu starten, beunruhigt mich. Ich schätze, ich könnte den Filter auf bestimmte Controller beschränken - vielleicht alle meine Controller, die eine Transaktion benötigen, unter einen Pseudo "tx" -Pfad oder so. Aber ist es nicht eine schlechte Idee, Transaktionen zu verwenden, wenn Sie nicht wissen, ob Sie eine benötigen werden? Und wenn ich nur eine Anfrage einlese, die sehr wahrscheinlich aus einem Cache stammt, bin ich dann ohne Transaktion nicht besser dran?

Ich habe Beiträge gelesen, in denen erwähnt wurde, wie Transaktionen auf der Serviceebene abgewickelt wurden, und ich möchte dies mit Spring tun. Aber wie sieht dann der Filtercode aus? Ich möchte immer noch, dass die Sitzung in meiner Ansicht für etwas verzögertes Laden verfügbar ist.

Wenn ich nur noch anrufen musssessionFactory.getCurrentSession() Wie wird es in meinem Filter zur Wiederverwendung in die Sitzungsfactory "freigegeben"? Ich hatte erwartet, einen zu sehensession.close() oder etwas, auch wenn Transaktionen verwendet werden.) Wer teilt der Session Factory mit, dass diese Session wiederverwendet werden kann?

Vielleicht ist es dasbeginTransaction() Aufruf, der eine bestimmte Datenbankverbindung für die Dauer einer Anforderung an eine bestimmte Sitzung bindet? Andernfalls zieht eine Sitzung nach Bedarf DB-Verbindungen aus dem Pool, oder?

Vielen Dank für Ihre Geduld mit all meinen Fragen.

(Und wenn Ihre Antwort ein Link zur Spring-Dokumentation sein soll, werden Sie mich zum Weinen bringen. Sie wollen das doch nicht, oder? Ich bezahle echtes Geld, wenn die Leute aufhören würden, Spring-bezogene Fragen zu beantworten Weg.)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage