spring事务
来源:互联网 发布:linux rar 编辑:程序博客网 时间:2024/05/03 03:43
事务的概念
一组操作,这组操作要么全部成功,要么全部失败。
事务的特性
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性是指事务前后数据的完整性是一致的。
隔离性是指多个用户并发访问数据库时,一个用户的事物不能被其他用户的事物所干扰,多个并发事务之间的数据要相互隔离。
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。
spring中有关事务的接口
spring为实现事务提供了一组接口,主要为以下三个接口:
PlatformTransactionManager
TransactionDefinition
TransactionStatus
TransactionDefinition
TransactionStatus
PlatformTransactionManager
public interface PlatformTransactionManager { TransactionStatus getTransaction(TransactionDefinition var1) throws TransactionException; void commit(TransactionStatus var1) throws TransactionException; void rollback(TransactionStatus var1) throws TransactionException;}
spring为不同的持久化框架提供了不同PlatformTransactionManager,项目中如果使用的jdbc或是ibatis,那么对应的实现类为DataSourceTransactionManager
TransactionDefinition
这个接口定义了一组常量
public interface TransactionDefinition { int PROPAGATION_REQUIRED = 0; int PROPAGATION_SUPPORTS = 1; int PROPAGATION_MANDATORY = 2; int PROPAGATION_REQUIRES_NEW = 3; int PROPAGATION_NOT_SUPPORTED = 4; int PROPAGATION_NEVER = 5; int PROPAGATION_NESTED = 6; int ISOLATION_DEFAULT = -1; int ISOLATION_READ_UNCOMMITTED = 1; int ISOLATION_READ_COMMITTED = 2; int ISOLATION_REPEATABLE_READ = 4; int ISOLATION_SERIALIZABLE = 8; int TIMEOUT_DEFAULT = -1; int getPropagationBehavior(); int getIsolationLevel(); int getTimeout(); boolean isReadOnly(); String getName();}
传播行为
int PROPAGATION_REQUIRED = 0;
int PROPAGATION_SUPPORTS = 1;
int PROPAGATION_MANDATORY = 2;
int PROPAGATION_REQUIRES_NEW = 3;
int PROPAGATION_NOT_SUPPORTED = 4;
int PROPAGATION_NEVER = 5;
int PROPAGATION_NESTED = 6;
int PROPAGATION_SUPPORTS = 1;
int PROPAGATION_MANDATORY = 2;
int PROPAGATION_REQUIRES_NEW = 3;
int PROPAGATION_NOT_SUPPORTED = 4;
int PROPAGATION_NEVER = 5;
int PROPAGATION_NESTED = 6;
传播行为主要是用来解决业务层上出现的相互调用的复杂情况
隔离级别
int ISOLATION_DEFAULT = -1; // 使用后端数据库默认的隔离级别int ISOLATION_READ_UNCOMMITTED = 1; //最低级别
int ISOLATION_READ_COMMITTED = 2; //避免脏读 oracle默认的级别
int ISOLATION_REPEATABLE_READ = 4; // 避免脏读,不可重复读。mysql默认的级别
int ISOLATION_SERIALIZABLE = 8; //串行事务,不可能出现并发访问的
如果事务不考虑隔离性,会出现脏读,不可重复读,幻读。隔离级别就是用来处理这几个情况的。
脏读:A事务读取了B事务还未提交的数据,B事务回滚了,A事务读取的数据是无效的。
不可重复读:在同一个事务里,多次读取同一个数据返回的结果不同
幻读:一个事务读取到另一个事务的insert语句,导致出现原来没有的记录。
不可重复读和幻读往往区分不清: 可以暂时理解不可重复读是针对update,幻读是针对insert
超时
int TIMEOUT_DEFAULT = -1; 0 0
- 事务:spring事务支持
- 事务:spring事务支持
- spring 事务,事务特性
- Spring事务
- Spring 事务
- Spring事务
- spring事务
- Spring事务
- spring 事务
- spring 事务
- spring事务
- Spring 事务
- spring事务
- Spring 事务
- spring 事务
- Spring事务
- Spring 事务
- spring事务
- 用数组实现两个栈,要求最大地利用空间
- 2016年蓝桥杯凑算式java版
- theano dimshuffle的使用说明
- RPC系列-初体会
- 治疗“实火”引起的急性口腔溃疡及清新口气的方法
- spring事务
- 天梯赛5-12 愿天下有情人都是失散多年的兄妹 【dfs】
- webmin脚本安装与配置
- 正则表达式——反向引用
- poj 1724
- 蓝桥杯编程大题—— 李白打酒
- 自定义带删除按钮的 Edittext 并伴随动画效果
- mongodb 添加删除字段
- springMVC整合UEditor