多线程与hibernate session
来源:互联网 发布:nginx for windows 编辑:程序博客网 时间:2024/04/29 07:54
1、关于SessionFactory和Session
SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一 个SessionFactory并从中获取Session实例,而Session不是线程安全的。Session中包含了数 据库操作相关的状态信息,那么说如果多个线程同时使用一个Session实例进行CRUD,就很有可能导致数据存取的混乱。每个线程/事务应该从一个SessionFactory获取自己的session实例,才能在新线程中使用事务和延迟加载等功能,否则会曝出no session异常。
2、session的创建:
Hibernate中的Session通过SessionFactory来创建,具体的创建方式有两种:
SessionFactory.getCurrentSession()、SessionFactory.openSession() ;
这两种创建Session的方式主要有如下差别:
a:getCurrentSession创建的session会绑定到当前线程,而openSession不会。
b:getCurrentSession创建的线程会再事务回滚或事务提交后自动关闭,而openSession必须手动关闭
c:getCurrentsession需要在hibernate.cfg.xml文件中添加配置: <propertyname="current_session_context_class">thread</property>
3、spring hibernate session
使用hibernate进行数据库操作时,需要session,并且需要对sesssion进行事务管理.
当使用spring来集成hibernate时,spring会帮我们管理session的事务,因此无需我们手动操作事务(提交、回滚等)。
在Spring托管中,session并不是程序员自己控制的,session的生命周期交由Spring管理。影响session生命周期的情况有这几种:
使用SessionFactory.getCurrentSession()方法。
使用HibernateTemplate来屏蔽对session的直接访问。
使用HibernateTransactionManager,并在session使用区域外围包装了本地事务,甚至是事务嵌套。
使用了JtaTransactionManager,并在session使用区域外围包装了Jta事务,甚至是事务嵌套。
使用了OpenSessionInViewFilter。
- 多线程与hibernate session
- Hibernate SessionFactory与Session
- Hibernate SessionFactory与Session
- spring+hibernate多线程下session问题
- hibernate session.load 与session.get 方法
- Hibernate 之 Session 与 Session Factory 对象
- Hibernate开发过程与session
- hibernate session 与 HttpSession 区别
- Hibernate中的Session与Transaction
- hibernate session 与 HttpSession 区别
- HttpSession 与 Hibernate Session区别
- hibernate总结---session与object
- Hibernate—session与transaction
- Hibernate中的 Session 与Transaction
- 【Hibernate】(2)Hibernate配置与session、transaction
- 解决多线程中hibernate出现no session问题
- hibernate事务与session管理小结
- Hibernate:session.flush与transaction.commit
- 发现roscd beginner_tutorials 进不去目录 beginner_tutorials
- 51nod 1296 有限制的排列
- 光环国际2017年敏捷论坛已启动 你准备好了吗?
- 我眼中的设计模式(4)
- 阿里云部署公司网盘实例
- 多线程与hibernate session
- request,session
- 【笔记】Java核心技术 卷1 基础知识 第一章 读书笔记
- Android Butterknife 8.4.0 使用方法总结
- 局部变量和成员变量(C#)
- 字符串全排列
- Semantic segmentation
- [商业_法务] 2、注册公司起名很费劲,用C++怒写个随机名字生成器
- 二进制、八进制、十进制与十六进制