1. 事务特性
1.1 原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的诸操作要么全 做,要么全不做。
1.2 一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另 一个一致性状态。一致性与原子性是 密切相关的。
1.3 隔离性(Isolation):一个事务的执行不能被其他事务干扰。
1.4 持续性/永久性(Durability):一个事务一旦提交,它对数据库中数据的改变就应该 是永久性的。
2. 事务并发性
2.1 脏读:一个事务读到另一个事务未提交的更新数据。
2.2 不可重复读:一个事务执行两次查询,但第二次查询比第一次查询多出了一些数据 行
2.3 幻/虚读:一个事务两次读同一行数据,可是这两次读到的数据不一样
3. 事务的隔离级别
3.1. Serializable:串行化。隔离级别最高
3.2. Repeatable Read:可重复读。
3.3. Read Committed:读已提交数据。
3.4. Read Uncommitted:读未提交数据。隔离级别最差。
4.在项目中如何管理事务
4.1 业务开始之前打开事务,业务执行之后提交事务,执行过程中出现异常,回滚事务
4.2 在dao层操作数据库需要用到session对象,在service控制事务也是使用session 对象完成,我们要确保dao层和 service 层使用的是同一个session对象
4.3 在hibernate中,确保使用同一个session的问题,hibernate已经帮我们解决了, 我们开发人员只需要调用 sessionfactory.getCurrentSession()方法即可获得与 当前线程绑定的session对象
4.3.1 调用getCurrentSession()方法必须配合主配置中的
4.3.2 通过getCurrentSession()方法获得的session对象,当事务提交时,session 会自动关闭,不能手动调用close()关闭 session