Я использую Hibernate с Spring на Tomcat. Я читал и перечитывал часто указывая на страницу Wiki JBoss по этой теме, и это было полезно. Но это оставляет мне некоторые вопросы.
-
Идея начать транзакцию для каждого запроса беспокоит меня. Думаю, я мог бы ограничить фильтр определенными контроллерами - возможно, поставить все мои контроллеры, которым нужна транзакция под псевдо-tx-маршрутом или что-то в этом роде. Но разве это не плохая идея использовать транзакции, если вы не знаете, если вам это понадобится? И если я просто читаю в каком-то запросе - читает, что, скорее всего, может произойти из кеша - разве мне не лучше без транзакции?
-
Я читал сообщения о том, как они обрабатывали транзакции на уровне службы, и я хотел бы сделать это с помощью Spring. Но тогда как выглядит код фильтра? Я все еще хочу, чтобы сеанс был доступен для моего просмотра для некоторой ленивой загрузки.
-
Если все, что мне нужно сделать, это вызвать
sessionFactory.getCurrentSession()
в моем фильтре, как он "освободится" обратно на сеанс factory для повторного использования? (Я ожидал увидетьsession.close()
или что-то еще, даже при использовании транзакций.) Кто говорит сеансу factory, что этот сеанс можно повторно использовать? -
Возможно, это вызов
beginTransaction()
, который связывает данное соединение с базой данных с данным сеансом на время запроса? В противном случае сеанс вытягивает соединения db из пула по мере необходимости, правильно?
Спасибо за ваше терпение со всеми моими вопросами.
(И если ваш ответ будет ссылкой на документацию Spring, вы просто заставите меня плакать. Вы этого не хотите, не так ли? Я заплачу реальные деньги, если люди перестанут отвечать Spring -связанные вопросы таким образом.)