我在 Tomcat 上使用 Hibernate 和 Spring。我一直在阅读和重新阅读经常指向该主题的JBoss wiki 页面,这很有帮助。但这给我留下了一些问题。
为每个请求启动事务的想法让我很困扰。我想我可以将过滤器限制为某些控制器——也许将我所有需要事务的控制器放在伪“tx”路径或其他东西下。但是,如果您不知道是否需要交易,那么使用交易不是一个坏主意吗?如果我只是在一些请求中进行读取——很可能来自缓存的读取——没有事务我不是更好吗?
我已经阅读了提到他们如何在服务层处理事务的帖子,我想用 Spring 来做这件事。但是过滤器代码是什么样的呢?我仍然希望会话在我的视图中可用以进行一些延迟加载。
如果我所要做的就是调用
sessionFactory.getCurrentSession()
我的过滤器,它如何“释放”回会话工厂以供重用?(即使在使用事务时,我也希望看到 asession.close()
或其他东西。)谁告诉会话工厂该会话可以重用?也许是
beginTransaction()
在请求期间将给定数据库连接绑定到给定会话的调用?否则,会话会根据需要从池中提取数据库连接,对吗?
感谢您对我所有问题的耐心等待。
(如果你的答案是指向 Spring 文档的链接,那你只会让我哭泣。你不希望这样,是吗?如果人们不再回答与 Spring 相关的问题,我会付真金白银的。方式。)