Spring事务_1
Posted charles999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring事务_1相关的知识,希望对你有一定的参考价值。
事务:指逻辑上一组操作,这组操作要么全部成功,要么全部失败。
事务的特性:
1 原子性:食物是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
2 一致性:事务执行前后数据的完整性必须保持一致
3 隔离性 :多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干烧,多个并发事务之间数据要相互隔离。
4 持久性:一个事务一旦被提交,它对数据库的中的数据的改变就是永久性的,及时数据库发生故障也不会有影响。
===============================================================
3-1 Spring接口介绍
·Spring事务管理高层抽象主要包括3个接口
·PlatformTransactionManager事务管理器
·TransactionDefinition事务定义信息(隔离,传播,超时,只读)
·TransactionStatus事务具体运行状态
---3-2 PlatformTransactionManager接口介绍--------------------------------------------------------------------------------------------------------------
·PlatformTransactionManager事务管理器
Spring为不同的持久化框架提供了不同的PlatformTransactionManager接口实现
org.springframework.jdbc.datasource.DataSourceTransactionManager 使用Spring JDBC或IBatis进行持久化数据时使用
org.springframework.orm.hibernate3.HibernateTransactionManager 使用Hibernate3.0版本进行持久化数据时使用
org.springframework.orm.jpa.JpaTransactionManager 使用JPA进行持久化数据时使用
org.springframework.jdo.JdoTransactionManager 当持久化机制是Jdo时使用
org.springframework.transaction.jta.JtaTransactionManager 使用一个JTA实现来管理事务,在一个事务跨越多个资源时必须使用
---3-3 TransactionDefinition定义事务隔离级别--------------------------------------------------------------------------------------------------------------
TransactionDefinition定义事务隔离级别
不考虑隔离性,会引发安全问题如下:
脏读,不可重复读,幻读
脏读:一个事务读取了另一个事务改写但是还未提交的数据,如果这些数据被回滚,则读到的数据时无效的。
不可重复读:在同一个事务中,多次读取同一数据返回的结果有所不同
幻读(虚读):一个事务读取了几行记录后,另一个事务插入一些记录幻读就发生了。再后来的查询中,第一个事务就会发现有些原来没有的记录。
事务隔离级别TransactionDefinition.ISOLATION_
DEFAULT : 默认隔离级别(对大多数数据库来说就是ISOLATION_ READ_COMMITTED(Oracle),mysql采用REPEATABLE_READ)
READ_UNCOMMITTED : 最低的隔离级别。(可能防止脏读,但不可重复读,幻读可发生)事实上我们不应该称其为隔离级别,因为在事务完成前,其他事务可以看到该事务所修改的数据。而在其他事务提交前,该事务也可以看到其他事务所做的修改
READ_COMMITTED : 大多数数据库的默认级别。在事务完成前,其他事务无法看到该事务所修改的数据。遗憾的是,在该事务提交后,你就可以查看其他事务插入或更新的数据。这意味
着在事务的不同点上,如果其他事务修改了数据,你就会看到不同的数据
REPEATABLE_READ : 比ISOLATION_READ_COMMITTED更严格,该隔离级别确保如果在事务中查询了某个数据集,你至少还能再次查询到相同的数
据集,即使其他事务修改了所查询的数据。(对相同字段多次读取时一致的,除非数据被事务本身改变。可防止脏读,不可重复读,但幻读仍可发生)然而如果其他事务插入了新数据,你就可以查询到该新插入的数据
SERIALIZABLE : (完全服从ACID的隔离级别,确保不发生脏读,不可重复读,幻读)代价最大、可靠性最高的隔离级别,所有的事务都是按顺序一个接一个地执行。
---3-3 TransactionDefinition定义事务传播行为--------------------------------------------------------------------------------------------------------------
---3-4 --------------------------------------------------------------------------------------------------------------
---3-4 --------------------------------------------------------------------------------------------------------------
---3-4 --------------------------------------------------------------------------------------------------------------
---3-4 --------------------------------------------------------------------------------------------------------------
以上是关于Spring事务_1的主要内容,如果未能解决你的问题,请参考以下文章