事务01(Spring 笔记011)

事务与保存点

事务:事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
一组操作要么同时执行,要么同时不执行,如转账。

事务保存点的设置

在这里插入图片描述

Connection conn=null;
Savepoint savepoint =null;//保存点
try{
    
    
//1.获得链接
conn=~~~~;
//2.开启事务
conn.setAutoCommit(false);
A,B
savepoint = conn.setSavepoint();
C,D
//3.事务提交
conn.commit();
}catch(e){
    
    
    if(savepoint != null){
    
    
   conn.rollback(savepoint);//C,D异常
    conn.commit();//提交AB
    }else{
    
    conn.rollback();}
}

Spring事务管理的接口

事 务 管 理 的 接 口 { T r a n s a c t i o n D e f i n i t i o n ( 事 务 的 定 义 , 属 性 , 详 情 ) T r a n s a c t i o n S t a t u s ( 事 务 的 状 态 ) P l a t f o r m T r a n s a c t i o n M a n a g e ( 平 台 事 务 管 理 器 ) \mathrm{事务管理的接口}\left\{\begin{array}{l}TransactionDefinition(事务的定义,属性,详情)\\TransactionStatus(事务的状态)\\PlatformTransactionManage(平台事务管理器)\end{array}\right. TransactionDefinition()TransactionStatus()PlatformTransactionManage()
事 务 管 理 的 j a r 包 ( W E N − I N F / l i b ) { s p r i n g − t x − 3.2.0. R E L E S A 3 E . j a r P l a t f o r m T r a n s a c t i o n M a n a g e { s p r i n g − j d b c − 3.2.0. R E L E A S E . j a r s p r i n g − o r m − 3.2.0. R E L E A S E . j a r \begin{array}{c}\mathrm{事务管理的}jar包\\(WEN-INF/lib)\end{array}\left\{\begin{array}{l}spring-tx-3.2.0.RELESA3E.jar\\PlatformTransactionManage\left\{\begin{array}{l}spring-jdbc-3.2.0.RELEASE.jar\\spring-orm-3.2.0.RELEASE.jar\end{array}\right.\end{array}\right. jar(WENINF/lib)springtx3.2.0.RELESA3E.jarPlatformTransactionManage{ springjdbc3.2.0.RELEASE.jarspringorm3.2.0.RELEASE.jar

TransactionDefinition事务详情的方法有: 描述
①getPropagarionBehavior():int 传播行为(两个业务之间如何共享事务)
②getIsolationLevel():int 隔离级别
③getTimeout():int 获得超时时间
④isReadOnly:boolean 是否只读
⑤getName():String 配置事务详情名称(一般方法名称如add,save等)
①getPropagarionBehavior传播行为(两个业务之间如何共享事务)的参数有7个 ,比较重要的加* 解释
TransactionDefinition.PROPAGATION_REQUIRED* 当前如果有事务,Spring就会使用该事务;否则会开始一个新事务
TransactionDefinition.PROPAGATION_SUPPORTS 当前如果有事务,Spring就会使用该事务;否则不会开始一个新事务
TransactionDefinition.PROPAGATION_MANDATORY 当前如果有事务,Spring就会使用该事务;否则会抛出异常
TransactionDefinition.PROPAGATION_REQUIRES_NEW* Spring总是开始一个新事务。如果当前有事务,则该事务挂起
TransactionDefinition.PROPAGATION_NOT_SUPPORTED Spring不会执行事务中的代码。代码总是在非事务环境下执行,如果当前有事务,则该事务挂起
TransactionDefinition. PROPAGATION_NEVER 即使当前有事务,Spring也会在非事务环境下执行。如果当前有事务,则抛出异常
TransactionDefinition. PROPAGATION_NESTED 如果当前有事务,则在嵌套事务中执行。如果没有,开始一个新事务.事务A和B底层采用保存点机制,形成事务的嵌套

猜你喜欢

转载自blog.csdn.net/ResumeProject/article/details/112927386
011
今日推荐