Hibernate问题

修身0 2011-09-17 11:54:59
HibernateSessionFactory工厂中获得一个session,这个session默认情况下是单例模式吗
还是每次获得session都是不同的
...全文
98 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
艾小仙 2011-09-19
  • 打赏
  • 举报
回复
老师威武啊
飓风zj 2011-09-19
  • 打赏
  • 举报
回复
是位于threadLocal里的单例模式,这样是最安全的,这样每个线程的访问都不会互相干扰了。
Cactus_hxk 2011-09-19
  • 打赏
  • 举报
回复
lz这样的结贴真的很棒,学习了,难怪你的结贴率是:200.00%
  • 打赏
  • 举报
回复
楼主结贴率: 结帖率:200.00%
licip 2011-09-18
  • 打赏
  • 举报
回复
不是,session是线程不安全,如果是单例的那会不安全的。
tom4632330 2011-09-18
  • 打赏
  • 举报
回复
这问题没太注意过,不过分析下
应该是单例模式的
因为如果你用完session而不释放掉
会报错的 建议你用Debug模式测试下 一目了然
游一游走一走 2011-09-18
  • 打赏
  • 举报
回复
session不是单例的,因为它需要是线程安全的
Cactus_hxk 2011-09-18
  • 打赏
  • 举报
回复
Hibernate中的session是可以在hibernate.cfg.xml文件中配置如下:
* 如果使用的是本地事务(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必须手动关闭

火光闪耀 2011-09-18
  • 打赏
  • 举报
回复
200% 太牛了


还有就是都factory了,怎么可能还是单例呢。

所以它是多个session。
fwb3950201 2011-09-18
  • 打赏
  • 举报
回复
这个session 貌似和你的线程绑定的!你可以试下,如果同时使用此session工厂类获取session 这些session是相同的!
修身0 2011-09-18
  • 打赏
  • 举报
回复
能给个例子吗!我的结贴率没有问题的,一定是对的!
ylovep 2011-09-18
  • 打赏
  • 举报
回复
ysl_228
(ysl_228)
等 级:
结帖率:200.00%

楼主结贴率: 结帖率:200.00%
ylovep 2011-09-18
  • 打赏
  • 举报
回复
关注中,session这个类似于spring的beanfactory
皮特张 2011-09-18
  • 打赏
  • 举报
回复
session不是单例的

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧