关于事务的传播特性和隔离级别的问题

REQUIRED:业务方法需要在一个事务中运行。如果方法运行时,已经处在一个事务中,那么加入到该事务,否则为自己创建一个新的事务。


NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为它开启事务。如果方法在一个事务中被调用,该事务会被挂起,在方法调用结束后,原先的事务便会恢复执行。


REQUIRESNEW:属性表明不管是否存在事务,业务方法总会为自己发起一个新的事务。如果方法已经运行在一个事务中,则原有事务会被挂起,新的事务会被创建,直到方法执行结束,新事务才算结束,原先的事务才会恢复执行。

MANDATORY:该属性指定业务方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果业务方法在没有事务的环境下调用,容器就会抛出例外。


SUPPORTS:这一事务属性表明,如果业务方法在某个事务范围内被调用,则方法成为该事务的一部分。如果业务方法在事务范围外被调用,则方法在没有事务的环境下执行。


Never:指定业务方法绝对不能在事务范围内执行。如果业务方法在某个事务中执行,容器会抛出例外,只有业务方法没有关联到任何事务,才能正常执行。


NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按REQUIRED属性执行.它使用了一个单独的事务, 这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器起效

 

关于事务隔离级别的问题:

数据库系统提供了四种事务隔离级别供用户选择。不同的隔离级别采用不同的锁类型来实现,在四种隔离级别中,Serializable的隔离级别最高,Read Uncommited的隔离级别最低。大多数据库默认的隔离级别为Read Commited,如SqlServer,当然也有少部分数据库默认的隔离级别为Repeatable Read ,如Mysql
Read Uncommited:读未提交数据(会出现脏读,不可重复读和幻读)。
Read Commited:读已提交数据(会出现不可重复读和幻读)
Repeatable Read:可重复读(会出现幻读)
Serializable:串行化

脏读:一个事务读取到另一事务未提交的更新新据。
不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。换句话说就是,后续读取可以读到另一事务已提交的更新数据。相反,“可重复读”在同一事务中多次读取数据时,能够保证所读数据一样,也就是,后续读取不能读到另一事务已提交的更新数据。
幻读:一个事务读取到另一事务已提交的insert数据。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
事务是指一组操作被视为一个单独的工作单元,并且要么全部完成,要么全部撤销。事务具有以下四个基本特性: 1. 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部失败回滚,不允许只执行其中一部分操作。 2. 一致性(Consistency):事务执行前后,系统的数据状态必须保持一致。 3. 隔离性(Isolation):事务之间是相互隔离的,一个事务执行过程中,其对数据库的修改在提交前,对其他事务是不可见的。 4. 持久性(Durability):事务一旦提交,它对数据库的修改就是永久性的,即使系统崩溃也不会丢失。 事务隔离级别是指多个并发事务之间的隔离程度,包括以下四种级别: 1. 读未提交(Read Uncommitted):一个事务还没有提交时,它做的修改就能被其他事务看到。 2. 读已提交(Read Committed):一个事务提交后,它的修改才能被其他事务看到。 3. 可重复读(Repeatable Read):一个事务执行期间,多次读取同一个数据,读到的数据始终保持一致。 4. 串行化(Serializable):所有事务按照顺序一个一个执行,不存在并发问题事务传播机制是指在一个事务中调用其他事务时,它们之间的关系。主要有以下四种传播机制: 1. REQUIRED:默认传播机制,如果当前没有事务,则新建一个事务,如果已经存在事务,则加入该事务。 2. REQUIRES_NEW:每次都会新建一个事务,如果当前存在事务,则挂起该事务,等新事务执行完毕后再恢复。 3. SUPPORTS:如果当前存在事务,则加入该事务,如果没有事务,则以非事务方式执行。 4. NOT_SUPPORTED:以非事务方式执行,如果当前存在事务,则挂起该事务,等非事务执行完毕后再恢复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值