首页 > Web开发 > 详细

Hibernate框架学习(四)——事务

时间:2018-02-04 19:02:01      阅读:178      评论:0      收藏:0      [点我收藏+]

一、回顾事务的概念http://www.cnblogs.com/cxq1126/p/8313600.html

1、特性ACID:原子性、一致性、隔离性、持久性

2、并发问题:脏读、不可重复读、幻|虚读

3、事务的隔离级别:读未提交、读已提交、可重复读、串行化

二、如何在Hibernate中指定数据库的隔离级别

在主配置文件hibernate.cfg.xml中添加一行

技术分享图片

三、项目中如何管理事务

规则:业务开始之前打开事务、业务执行之后提交事务,执行过程中出现异常回滚事务

在dao层操作数据库需要用到session对象,在service层控制事务也使用了session对象,要确保dao层和service层使用的同一个session对象。

在hibernate中确保使用同一个session的问题,hibernate已经解决了,开发人员只需要调用sf.getCurrentSession()方法即可获得与当前线程绑定的session对象。

注意:

  1)调用sf.getCurrentSession()方法必须配合主配置中的一段配置。

技术分享图片

 1 //测试getCurrentSession
 2 public class Demo {
 3     @Test
 4     //返回同一个session
 5     public void fun1(){
 6         Session session1 = HibernateUtils.getCurrentSession();
 7         Session session2 = HibernateUtils.getCurrentSession();
 8         
 9         System.out.println(session1==session2);    //true
10     }
11     @Test
12     //返回不同的session
13     public void fun2(){
14         Session session1 = HibernateUtils.openSession();
15         Session session2 = HibernateUtils.openSession();
16         
17         System.out.println(session1==session2);    //false
18     }
19 }

  2)通过getCurrentSession方法获得的session对象,当事务提交时session会自动关闭,不要手动调用close关闭,否则抛出异常。

 Service层修改:

技术分享图片

Dao层修改:

技术分享图片

Hibernate框架学习(四)——事务

原文:https://www.cnblogs.com/cxq1126/p/8407103.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!