hibernate _事务相关知识点隔离级别设置与项目中的事务管理

一、什么是事务

1、Hlbernate是对JDBC的轻量级封装,其主要功能是操作数据库。在操作数据库过程中,经常会遇到事务处理的问题,那么我们接下来就来介绍Hibernate中的事务管理

2、在数据库操作中,一项事务(Transactlon)是由一条或多条操作数据库的SQL语句组成的一个不可分割的工作单元。当事务中的所有操作都正常完成时,整个事务才能被提交到数据库中,如果有一项操作没有完成,则整个事务会被回滚

二、事务特性

1、原子性(Atomic):

1、表示将事务中所做的操作捆绑成一个不可分割的单元,即对事务所进行的数据修改等操作,要么全部执行,要么全都不执行

2、一致性(Consistency):

2、表示事务完成时,必须使所有的数据都保持一致状态

3、隔离性(Isolatlon):

3、指一个事务的执行不能被其它事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰

4、持久性(Durablllty):

4、持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。提交后的其他操作或故障不会对其有任何影响

三、事务并发

1、脏读:

1、一个事务读取到另一个事务未提交的数据

2、不可重复度:

1、一个事务读到了另一个事务己经提交的update的数据,导致在同一个事务中的多次查询结果不一致

3、幻|虚读:

1、一个事务读到了另一个事务己经提交的Insert的数据,导致在同一个事务中的多次查询结果不一致

四、事务的隔离级别

1、读未提交-(可脏读/不可重复度/幻|虚读)

2、读已提交 -(可不可重复度/幻|虚读)

3、可重复读(mysql默认级别)--(可幻|虚读)

4、串行化 - 没有问题

五、hibernate中指定数据库的隔离级别

1、在默认的配文件中查询

hibernate _事务相关知识点隔离级别设置与项目中的事务管理

hibernate _事务相关知识点隔离级别设置与项目中的事务管理

六、管理事务

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

2、在dao层操作数据库需要用到session对象.在service控制事务也是使用session对象完成. 我们要确保dao层和service层使用的使用同一个session对象

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

1、调用sf.getCurrentSession()方法

1、注意: 调用getCurrentSession方法必须配合主配置中的一段配置

2、这个在hibernate.properties是找不到,必须记住

3、注意:通过getCurrentSession方法获得的session对象.当事务提交时,session会自动关闭.不要手动调用close关闭.

hibernate _事务相关知识点隔离级别设置与项目中的事务管理

4、测试

hibernate _事务相关知识点隔离级别设置与项目中的事务管理

hibernate _事务相关知识点隔离级别设置与项目中的事务管理

hibernate _事务相关知识点隔离级别设置与项目中的事务管理