Hibernate框架学习(四)——事务
2024-10-01 13:45:27
一、回顾事务的概念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()方法必须配合主配置中的一段配置。
//测试getCurrentSession
public class Demo {
@Test
//返回同一个session
public void fun1(){
Session session1 = HibernateUtils.getCurrentSession();
Session session2 = HibernateUtils.getCurrentSession(); System.out.println(session1==session2); //true
}
@Test
//返回不同的session
public void fun2(){
Session session1 = HibernateUtils.openSession();
Session session2 = HibernateUtils.openSession(); System.out.println(session1==session2); //false
}
}
2)通过getCurrentSession方法获得的session对象,当事务提交时session会自动关闭,不要手动调用close关闭,否则抛出异常。
Service层修改:
Dao层修改:
最新文章
- SQLite3源程序分析之分析器的生成
- VMware虚拟网络编辑器
- [小菜随笔]python tkinter实现简单的ping命令
- EF – 6.一对一关联
- 行为识别笔记:HOG,HOF与MBH特征(转载)
- HTML5 JS API 本地存储LocalStorage基本操作
- HTTP简单理解
- 如何用SVN进行个人版本管理
- android文件缓存,并SD卡创建目录未能解决和bitmap内存溢出解决
- innerText、innerHtml与value
- obj-c编程03:多个参数方法的定义
- 免费SSL证书Let's Encrypt(certbot)安装使用教程
- Getting started with Processing 第十三章——延伸(1)
- cocos2d-x游戏开发 跑酷(三) 人物跑动
- java Socket和ServerSocket多线程编程
- AMD、CMD、UMD 模块的写法
- 模拟器下的虚拟sd卡添加文件
- Linux下C与Mysql的混合编程
- Ubuntu 16.04安装cuda7.5 GCC
- [z]【Bash命令行处理】[详解]