JavaEE--SSH--hibernate-对事务的管理
2018-03-05 16:22
363 查看
hibernate对事务的管理:
1.通过session获取事务对象.Transaction transaction = session.beginTransaction();
开启-提交-回滚事务
2.核心配置文件设置事务的隔离级别.
sessionfactory标签中配置事务隔离级别属性:
<property name="hibernate.connection.isolation">4</property> // 1-2-4-8 事务隔离级别
1—Read uncommitted isolation 脏读,不可重复读,虚读都可能发生.
2—Read committed isolation 避免脏读,但是不可重复读和虚读有可能发生.
4—Repeatable read isolation 避免脏读和不可重复读,但是虚读有可能发生的.
8—Serializable isolation 避免脏读,不可重复读和虚读.(串行化的-不可能出现事务并发访问)
通过上面两种方法我们已经配置好了事务.但是在实际应用场景中,事务的控制并不是由持久层(Dao)去做,而是应该在Service层去做.Service层中有可能同时调用多个Dao实现一个业务逻辑的操作.这就会出现一个问题:如何保证Service中开启的事务使用的是同一个session对象?
我们有两个方法去解决:
1.在业务Service层获取Session,将Session作为参数传递给Dao层.(太麻烦,一般不用)
2.通过ThreadLocal将业务层获取的Session绑定到当前线程中,Dao层再获取Session时,就会获取到同一个Session了(推荐使用)
那我们如何使用第二种方式呢.其实hibernate已经替我们封装好了这一切.只需要在主配置文件中SessionFactory标签中加一个属性.
<property name="hibernate.current_session_context_class">thread</property>
注:当我们将事务绑定到当前线程后,就不用关闭Session了.这件事情交给hibernate去做.
1.通过session获取事务对象.Transaction transaction = session.beginTransaction();
开启-提交-回滚事务
2.核心配置文件设置事务的隔离级别.
sessionfactory标签中配置事务隔离级别属性:
<property name="hibernate.connection.isolation">4</property> // 1-2-4-8 事务隔离级别
1—Read uncommitted isolation 脏读,不可重复读,虚读都可能发生.
2—Read committed isolation 避免脏读,但是不可重复读和虚读有可能发生.
4—Repeatable read isolation 避免脏读和不可重复读,但是虚读有可能发生的.
8—Serializable isolation 避免脏读,不可重复读和虚读.(串行化的-不可能出现事务并发访问)
通过上面两种方法我们已经配置好了事务.但是在实际应用场景中,事务的控制并不是由持久层(Dao)去做,而是应该在Service层去做.Service层中有可能同时调用多个Dao实现一个业务逻辑的操作.这就会出现一个问题:如何保证Service中开启的事务使用的是同一个session对象?
我们有两个方法去解决:
1.在业务Service层获取Session,将Session作为参数传递给Dao层.(太麻烦,一般不用)
2.通过ThreadLocal将业务层获取的Session绑定到当前线程中,Dao层再获取Session时,就会获取到同一个Session了(推荐使用)
那我们如何使用第二种方式呢.其实hibernate已经替我们封装好了这一切.只需要在主配置文件中SessionFactory标签中加一个属性.
<property name="hibernate.current_session_context_class">thread</property>
注:当我们将事务绑定到当前线程后,就不用关闭Session了.这件事情交给hibernate去做.
相关文章推荐
- SSH中操作Hibernate的事务与删除数…
- SSH(三)——实现Service层、事务管理以及部署业务逻辑组件和实现Web层
- ssh简化后之事务管理
- Hibernate的事务管理
- JavaEE--SSH--hibernate-对象标识符,一级缓存,快照机制
- Spring管理 hibernate 事务配置的五种方式
- Spring第13篇—–Spring整合Hibernate之声明式事务管理
- Spring 整合 Hibernate、声明式的事务管理、HibernateTemplate(HibernateDaoSupport)
- spring 管理事务配置时,结果 报错: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常
- 传智播客学习之Hibernate事务管理和并发控制
- Spring整合Hibernate 二 - 声明式的事务管理
- Hibernate学习4 二级缓存强化和事务管理 注解方式实现
- 【SSH视频】--- spring中的事务和hibernate中的session应用
- Hibernate4+Spring3+SpringMVC事务管理
- Hibernate的数据库事务管理
- SPring管理Hibernate事务出现异常处理
- Spring管理Hibernate事务
- Hibernate的事务管理方法?
- 关于spring 与Hibernate 结合使用的事务管理
- Spring中的事务管理,hibernate整合,struts整合(佟刚)