hibernate当中的事务操作

本文详细介绍了数据库事务的概念、特点及并发问题,并针对这些问题提出了不同的事务隔离级别。同时,还讲解了如何在Hibernate框架中设置隔离级别以及如何在项目中进行事务管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)事务当中的概念


(2)事务的特点(ACID)


(3)事务的并发问题

脏读:一个事务读取到另一个事务为提交的数据

不可重复读:一个事务读取到另一个事务已经提交的update的数据,导致在一个事务中的多次查询的结果不一致

虚读|幻读:一个事务读到了另一个事务已经提交的insert的数据,导致在一个事务中的多次查询结果不一致。

(4)由此提出事务的隔离级别,分为4个,分别为:读未提交,读已提交,可重复读,串行。


(5)如何在hibernate当中设置隔离级别

从project->etc->hibernate.properties找到isolation level,在hibernate.cfg.xml当中修改。

其中有4个级别  1、2、4、8,即为0001、0010、0100、1000,期分别为读未提交,读已提交,重复读,串行化

(6)在项目中如何管理事务?

即在业务开始之前打开事务,在业务执行之后提交事务,执行过程当中出现异常,回滚事务

在dao层操作数据库需要到session对象,在service层控制事务也是用到sesson对象完成,我们要确保dao层和service层使用的应该为同一个session对象。

解决方案:将session绑定到当前的线程上。hibernate框架已经进行了相关操作,我们开发人员只需要调用sessionFactory。getCurrentSession方法即可获得与当前线程绑定的session对象。

注意1.1调用getCurrentSession 时,需要在配置文件当中自己写入,(properties文件当中找不到,需要手写)

<property name="hibernate.current_session_context_class">thread</property>


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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值