什么是事务?
一、 事务是恢复和并发控制的基本单位。
二、事务有四个性质,分别是原子性,一致性,隔离性,持久性。
原子性:一个事务是不可分割的单位,事务中的操作要么都做要么都不做。
一致性:事务必须是使数据库从一个一致性状态到另一个一致性状态。
隔离性:一个事务的执行不能被其他事务所干扰。即一个事物内部的操作以及使用的数据对并发的其他事务是隔离的,并发执行的各个事物之间不能互相干扰。
持久性:持久性也称永久性,指一个事务一旦被提交,他对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障都不该对其有影响。
三、什么时候想到用事务呢?
当对数据库的操作涉及到了多个表或者执行多个sql语句时,只有这些操作同时成功或者同时失败才符合要求。
四、事务应该写在那一层呢?
在java代码编写过程中,当涉及到对事物的控制时,一般是在service层处理事务,因为一个service可能对应了多个dao层。
五、说明业务方法需要事务的类型
1)事物的隔离级别:有四个值,默认是DEFAULT
READ_UNCOMMITED:读未提交。未解决任何并发问题
READ_COMMITTED:读已提交。解决脏读,存在不可重复读与幻读
REPEATABLE_READ:可重复读。解决脏读,不可重复读,存在幻读。
SERIALIZABLE:串行化。不存在并发问题。
2)事务传播行为常量
PROPAGATION_REQUIRED:指定的方法必须在事务内执行。若存在当前事务,九加入到当前事务中;若当前不存在事务,则创建一个新事务,是spring默认的传播行为。
PROPAGATION_REQUIRES_NEW
指定的方法支持当前事务,但若当前方法没有事务,也可以以非事务方式执行
PROPAGATION_SUPPORTS
总是新建一个事务,若存在当前事务,九江当前事务挂起,直到新事物执行完毕
六、在Spring中如何使用事务?
1)声明事务管理器DataSourceTransactionManager
2)开启注解驱动<tx:annotation-driven transaction-manager="上面声明的事务管理器"/>
3)在业务层public方法加入事务属性Transactional

浙公网安备 33010602011771号