HibernateSessionFactory工厂中获得一个session,这个session默认情况下是单例模式吗
还是每次获得session都是不同的
还是每次获得session都是不同的
解决方案 »
- 推荐几本适合初学者的java项目开发参考书
- EJB3 透明处理远程和本地调用的问题
- struts的jar冲突怎么解决
- 如何获取指定IP地址的机器上的文件夹内的文件的最后修改时间
- 帮忙解决个问题:启动tomcat时,Error FilterStart。。。。
- 在Hiberate事务中,出现抛异常或者其它原因导致没有执行commit或rollback方法时的安全问题
- 谁能帮帮找下BDK的下载地址,先谢谢大家了!
- 大哥哥们你们好。请进来说话。OK谢谢!
- 求教struts初级问题!
- 超多经典书下载!!!超多经典书下载!!!超多经典书下载!!!
- AXIS2发布了webservice,其中有返回值为LIST MAP SET 怎么获取这些值 并进行处理?
- 请问Servlet为什么这么部署错误啊 请高手给看看
(ysl_228)
等 级:
结帖率:200.00%楼主结贴率: 结帖率:200.00%
应该是单例模式的
因为如果你用完session而不释放掉
会报错的 建议你用Debug模式测试下 一目了然
还有就是都factory了,怎么可能还是单例呢。所以它是多个session。
* 如果使用的是本地事务(jdbc事务)
<property name="hibernate.current_session_context_class">thread</property>
* 如果使用的是全局事务(jta事务)
<property name="hibernate.current_session_context_class">jta</property>
而获取session的方法也有两种:
getCurrentSession()与openSession()
getCurrentSession () 使用当前的session
原理
sessionFactory.getCurrentSession()可以完成一系列的工作,当调用时,
hibernate将session绑定到当前线程,事务结束后,hibernate
将session从当前线程中释放,并且关闭session。当再次调用getCurrentSession
()时,将得到一个新的session,并重新开始这一系列工作
openSession() 重新建立一个新的session
* 采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession()
创建的session则不会
* 采用getCurrentSession()创建的session在commit或rollback时会自动关闭,而采用openSession()
创建的session必须手动关闭