什么是事务?

 一、 事务是恢复和并发控制的基本单位。

  二、事务有四个性质,分别是原子性,一致性,隔离性,持久性。

原子性:一个事务是不可分割的单位,事务中的操作要么都做要么都不做。

一致性:事务必须是使数据库从一个一致性状态到另一个一致性状态。

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

持久性:持久性也称永久性,指一个事务一旦被提交,他对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障都不该对其有影响。

  三、什么时候想到用事务呢?

当对数据库的操作涉及到了多个表或者执行多个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

posted @ 2022-03-14 16:20  芜湖笑笑生  阅读(737)  评论(0)    收藏  举报