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等操作呢?
展开
2个回答
展开全部
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>
用这种方法得到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>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询