hibernate的getcurrentsession()和opensession()的区别。

opensession()是open一个新的session,比方说一个事务结束了必须要关闭session,然后在new一个新的session进行另外一个事务?getcur... opensession()是open一个新的session,比方说一个事务结束了必须要关闭session,然后在new一个新的session 进行另外一个事务?getcurrentsession又是什么意思,他获取的是当前的session吗?那session'要怎样定义才能是当前的session呢,Sessiion session=sessionfactory.getcurrentsession();这样吗?那我完成一个事务之后想重新进行另一个操作,session要关闭之后在重新getcurrentsession还是直接就进行save等操作呢? 展开
 我来答
熙七年吩b3
2015-09-10 · TA获得超过101个赞
知道小有建树答主
回答量:66
采纳率:0%
帮助的人:56.6万
展开全部
Sessiion session=sessionfactory.getcurrentsession();

用这种方法得到session是不需要写session.close()的,事务提交后自动关闭.
使用SessionFactory.getCurrentSession()需要在hibernate.cfg.xml中如下配置:

* 如果采用jdbc独立引用程序配置如下:

<property name="hibernate.current_session_context_class">thread</property>

* 如果采用了JTA事务配置如下

<property name="hibernate.current_session_context_class">jta</property>
如果是和spring合并的话,在web.xml里添加如下代码帮你管理session的开和关

<!-- Spring提供的过滤器-打开和关闭session -->
<filter>
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>

<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
业庆母恬畅
2019-07-17 · TA获得超过3858个赞
知道大有可为答主
回答量:3046
采纳率:35%
帮助的人:259万
展开全部
1
getCurrentSession创建的session会和绑定到当前线程,而openSession不会。
2
getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭(调用session的close()方法)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式