Hibernate Open Session in View: Transakcja na żądanie?

Używam Hibernate z Spring na Tomcat. Czytałem i ponownie czytałem często wskazywaneStrona wiki JBoss na ten temat i to było pomocne. Ale pozostawia mi kilka pytań.

Martwi mnie pomysł rozpoczęcia transakcji na każde żądanie. Myślę, że mógłbym ograniczyć filtr do niektórych kontrolerów - może umieścić wszystkie moje kontrolery, które potrzebują transakcji pod pseudo „tx” ścieżką lub coś takiego. Ale czy nie jest złym pomysłem używanie transakcji, jeśli nie wiesz, czy będziesz ich potrzebować? A jeśli po prostu czytam w jakiejś prośbie - czyta, że ​​najprawdopodobniej może pochodzić z pamięci podręcznej - czy nie jest mi lepiej bez transakcji?

Przeczytałem posty wspominające o tym, jak radzili sobie z transakcjami w warstwie usług, i chciałbym to zrobić za pomocą Springa. Ale jak wygląda kod filtra? Nadal chcę, aby sesja była dostępna w moim odczuciu w przypadku leniwego ładowania.

Jeśli wszystko, co muszę zrobić, to zadzwonićsessionFactory.getCurrentSession() w moim filtrze, w jaki sposób zostaje on „uwolniony” z powrotem do fabryki sesji w celu ponownego użycia? (Spodziewałem się zobaczyćsession.close() czy coś, nawet podczas korzystania z transakcji.) Kto mówi fabryce sesji, że sesję można ponownie wykorzystać?

Być może to jestbeginTransaction() wywołanie, które wiąże dane połączenie bazy danych z daną sesją przez czas trwania żądania? W przeciwnym razie sesja pobiera w razie potrzeby połączenia db z puli, prawda?

Dziękujemy za cierpliwość ze wszystkich moich pytań.

(A jeśli twoja odpowiedź będzie linkiem do dokumentacji Springa, po prostu sprawisz, że będę płakał. Nie chcesz tego, prawda? Zapłacę prawdziwe pieniądze, jeśli ludzie przestaną odpowiadać na pytania związane ze Springem, które sposób.)

questionAnswers(2)

yourAnswerToTheQuestion