分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

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

发布时间:2023-09-06 01:41责任编辑:彭小芳关键词:Hibernate

一、回顾事务的概念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); ???//true10 ????}11 ????@Test12 ????//返回不同的session13 ????public void fun2(){14 ????????Session session1 = HibernateUtils.openSession();15 ????????Session session2 = HibernateUtils.openSession();16 ????????17 ????????System.out.println(session1==session2); ???//false18 ????}19 }

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

 Service层修改:

Dao层修改:

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

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved