12Spring的事务处理二
来源:互联网 发布:淘宝账户名怎么修改 编辑:程序博客网 时间:2024/06/16 04:49
Spring的持久层封装
传统的JDBC数据访问技术的一般流程是:
获取数据源
根据数据源获取链接
设定事务开始
执行相应的操作
最后执行成功则提交
执行失败则回滚
分布式事务处理——分布式事务处理即事务分布在多个资源上、由多个组件共享的事务,其特点:
组件在同一原子操作(原子性)中同多个资源通信。
多个组件要在同一原子操作中操作。
分布式事务需要多个不同的事务管理器的合作。
Spring提供了编程式事务处理以及声明式事务处理。
——spring的事务处理基于动态AOP实现。
默认情况下,使用java的动态代理,但是因为必须实现一个接口,所以对于没有实现接口的javaBean,spring通过CGLIB实现。
Spring的事务中心接口是org.springframework.transaction.PlatformTransactionManager.class。
里面有三个方法:
1.获取当前事务对象
TransactionStatusgetTransaction(TransactionDefinitiondefinition)throwsTransactionException;
2.提交事务 2
voidcommit(TransactionStatusstatus)throwsTransactionException;
3.事务回滚
voidrollback(TransactionStatusstatus)throwsTransactionException;
TransactionManager就是该接口的一个实现类。
TransactionDefinition也是一个接口其中定义了事务处理的部分属性定义。
intgetPropagationBehavior();——获取事务的传播性
intgetIsolationLevel();——获取事务的隔离层次
intgetTimeout();——获取事务是否超时
booleanisReadOnly();——获取是否为只读事务
StringgetName();——获取事务名称
interfaceTransactionStatusextendsSavepointManager,Flushable
代表了目前的事务,可以通过setRollbackOnly()来设定只读事务。
booleanisNewTransaction();
判断是否为一个新事务
booleanhasSavepoint();
判断有无保存点
voidsetRollbackOnly();
设为只读事务
booleanisRollbackOnly();
判断是否为只读事务
voidflush();
刷新事务
booleanisCompleted();
判断事务是否完成
编程式事务管理
TransactionTemplate能够以编程方式实现事务管理,其无状态切线程安全,其实例需要PlatformTransactionManaer的实例。
TransactionTemplate类继承了DefaultTransactionDefinition(默认事务定义)类,同时实现了TransactionOperations接口(事务操作)和InitializingBean接口。
该类的实例需要提供一个PlatformTranactionManager接口的一个实例对象。
PlatformTranactionManager实例对象可以通过构造方法传入。
两种构造方法。
之后其提供了三个方法。
1.执行完毕后调用的方法
2.执行事务处理的方法
3.发生异常时rollback的方法
使用TransactionTemplate比较简单,因为其实只需要调用execute方法就可以。
声明式事务管理
——spring的事务处理基于AOP实现,所以需要使用aopalliance.jar和cglib-nodep.jar包。
//Spring的声明式事务处理同样需要一个PlatformTransactionManager的一个实例。
数据源——数据源事务管理类——声明式事务管理
!!
若事务操作比较少,使用编程式事务管理,比较多使用声明式事务管理。
声明式事务管理可以使事务处理同业务逻辑分离。
- 12Spring的事务处理二
- Spring (二) 事务处理
- Spring 的事务处理
- Spring的事务处理
- Spring的事务处理机制
- Spring的事务处理
- spring的事务处理详解
- Spring事务处理的实现
- Spring 的事务处理
- Spring的事务处理方案
- Spring 的事务处理
- Spring 的事务处理
- spring的事务处理
- Spring事务处理的原理
- Spring 的事务处理浅谈
- spring的事务处理机制
- 11Spring的事务处理
- Spring的事务处理
- numpy.newaxis
- 11Spring的事务处理
- hdu2049 不容易系列之(4)——考新郎
- tensorflow从0开始(6)——保存加载模型
- Medium 5题 Longest Palindromic Substring
- 12Spring的事务处理二
- java算法4~交换两个整数,不能使用任何额外的变量
- PHP 用户提交的数据的安全性验证
- python中is和==的区别
- 13Spring的数据访问方式
- spring-data-mongodb-1.9.x中Aggregation关于Conditional Aggregation Operators的坑
- IOS Label下划线 中划线
- 重叠I/O之事件通知
- 日期和数量 根据数量合并分组