-
事务的传播行为 - 解决业务层的方法之间的相互调用的问题(在调用方法的过程中,事务是如何传递的) PROPAGATION_REQUIRED - 支持当前事务,如果不存在就新建一个 支持当前事务 举例 - 如果aaa()里面有事务就使用它的事务,(比如bbb()也使用aaa()的事务),如果aaa()没有事务,那么在调用bbb()的时候,bbb()就会创建一个事务,然后把aaa里面的内容给包进来,aaa()和bbb()是在同一事务里面的 挂起当前事务 - 比如aaa里面有事务,那么就把该事务挂起不实用了,重新创建一个新的事务,也就是aaa()和bbb()没有在同一事务中查看全部
-
事务的隔离级别(四种) DEFAULT - 使用的是底层数据库默认的隔离级别 Oracle默认采用READ_COMMITTED隔离级别查看全部
-
不考虑隔离性,会产生以下问题 脏读 - 一个事务读取了另一事务改写但还未提交的数据,如果这些数据回滚,则读到的数据是无效的,导致查询结果不一致 不可重复读 - 在同一事务中,多次读取同一数据返回的结果不同,读到了另一个事务已经提交的数据,导致这个事务中多次查询结果不一致 幻读(虚读) - 一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了,在后来的查询中,第一个事务就会发生有些原来没有的记录查看全部
-
一般使用前两个查看全部
-
Spring事务管理包括三个接口 PlatformTransactionManager - 平台事务管理器,真正用来管理事务的接口,包含事务的提交,回滚等信息 TransactionDefinition - 事务定义信息(隔离级别,传播行为,是否超时,设置只读) TransactionStatus - 事务具体的运行状态(是否已经提交,是否有保存点,是不是一个新的事务等等这些状态) 关系: 首先会根据TransactionDefinition事务定义的信息(比如定义了什么样的隔离级别,定义什么样的传播行为),由PlatformTransactionManager对事务进行管理,进行事务管理的过程中,事务会产生一些相应的状态,这些状态在TransactionStatus中查看全部
-
事务 - 逻辑上的一组操作,这组操作要么全部成功,要么全部失败 事务四大特性 - 原子性 - 事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生 - 一致性 - 事务前后数据的完整性必须保持一致(例如:两个人转账,转账前后总金额的数目都是固定的) - 隔离性 - 多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离(例如:假设有两个事务同时在操作数据库,例如张三修改一个记录,同时李四也在修改这个记录,会导致该记录被重复修改,或者第一次修改的记录被第二次记录给覆盖掉) - 持久性 - 一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响查看全部
-
总结事务管理的几种方式查看全部
-
tx标签声明式事务管理查看全部
-
业务层实现类查看全部
-
注解式事务管理,@Transactional 加在接口上也是有效的查看全部
-
事务属性配置查看全部
-
prop的格式查看全部
-
事务的转播行为查看全部
-
事务隔离级别查看全部
-
spring事务管理查看全部
举报
0/150
提交
取消