getSession()和getNewSession()之间的区别

时间:2011-05-29 12:04:04

标签: java hibernate spring orm transactions

使用Spring的SessionFactoryUtils进行Hibernate,getSession()和getNewSession()之间的实际区别是什么?

我在DAO方法中一直是getSession(),但是当它开始经常被调用时,一堆“Session is closed”异常开始出现。我将它更改为getNewSession(...),现在好像这些问题已经消失了......但是,我仍然需要知道。

请解释。

1 个答案:

答案 0 :(得分:4)

getSession()将尝试查找绑定到当前线程的预先存在的Session,并在必要时创建一个Session。 getNewSession()将始终创建会话。 Javadocs:http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/SessionFactoryUtils.html

如果您觉得您的会话过于频繁关闭,请尝试查找会话的发布位置。