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