您的位置:首页 > 编程语言 > Java开发

spring事务管理一:关于事务管理的接口

2016-06-02 00:00 274 查看
摘要: spring 事务管理

spring事务管理主要有三个接口:

事务管理器接口:PlatformTransactionManager。可以为不同的框架提供不同的实现,包括Spring JDBC、iBatis、Hibernate(有版本限制,3.0以上,spring版本更高时需要更高版本)、JPA、Jdo、JTA

事务定义接口:TransactionDefinition。包括设置隔离级别(ISOLATION)、传播行为(PROPAGATION)、超时信息(TIMEOUT)、只读参数(READONLY)。

事务状态接口:TransactionStatus。获取事务具体的状态。

详细:

关于事务隔离级别,有5种。分别是:

ISOLATION_DEFAULT,默认隔离级别,也就是根据数据的默认隔离级别,不同的数据库的隔离级别也不尽相同。

ISOLATION_READ_UNCOMMITTED,级别最低的隔离级别。允许读取其他还未提交但已改变的数据,可导致脏读、幻读、不可重复读等异常

ISOLATION_READ_COMMITTED,提交隔离级别。允许读取其他已经提交的数据,可防止脏读,但可能出现幻读、不可重复读

ISOLATION_REPEATABLE_READ,更高级别的隔离。对相同字段的多次读取是一致的,可防止脏读、不可重复读,但可能出现幻读

ISOLATION_SERIALIZABLE,级别最高的隔离。采用锁的方式进行事务操作,可以防止脏读、幻读、不可重复读,但随之而来的付出的时间和性能代价也更大

关于事务传播行为,事务传播行为主要是用来解决业务层对事务的调用问题,有7种。分别是:

PROPAGATION_REQUIRED,默认的传播行为,当前如果有事务,Spring就会使用该事务,否则会开始一个新事务

PROPAGATION_SUPPORTS,如果当前有事务则使用,没有也不会开始新事务

PROPAGATION_MANDATORY,如果当前有事务则使用,没有则会抛出异常

PROPAGATION_REQUIRES_NEW,总是会开启新事务,如果当前已经有事务存在会将原有的事务挂起

PROPAGATION_NOT_SUPPORTED,以非事务形式运行行为,如果当前已经有事务存在则挂起该事务

PROPAGATION_NEVER,以非事务形式运行行为,如果当前已经有事务存在则抛出异常

PROPAGATION_NESTED,如果当前有事务存在,则嵌套在该事务下执行;没有则会开启新事务

事务超时时间则是以getTimeout()方法获取,单位为秒(s);是否只读则通过isReadOnly()方法获取。

关于TransactionStatus接口的操作主要有三个,分别是isNewTransaction() 是否是新事务、isRollbackOnly()是否是只回滚事务,还有一个最重要的方法setRollbackOnly(),这个方法将事务设置为只允许回滚操作,即事务在任何操作下都是最终执行回滚。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: