当前位置: 首页 > wzjs >正文

做网站建网站公司大连做环评网站

做网站建网站公司,大连做环评网站,永州网站建设求职简历,网站开发项目需求分析Spring事务管理深度解析:原理、实践与陷阱 一、事务基础概念 ACID原则 原子性(Atomicity):事务内的操作要么全部成功,要么全部回滚一致性(Consistency):事务前后数据库状态保持一致隔离性(Isolation):并发事务间相互隔…

Spring事务管理深度解析:原理、实践与陷阱

一、事务基础概念

ACID原则

  • 原子性(Atomicity):事务内的操作要么全部成功,要么全部回滚
  • 一致性(Consistency):事务前后数据库状态保持一致
  • 隔离性(Isolation):并发事务间相互隔离
  • 持久性(Durability):事务提交后数据永久存储

二、Spring事务核心接口

public interface PlatformTransactionManager {TransactionStatus getTransaction(TransactionDefinition definition);void commit(TransactionStatus status);void rollback(TransactionStatus status);
}public interface TransactionDefinition {int getIsolationLevel();int getPropagationBehavior();int getTimeout();boolean isReadOnly();
}

三、事务配置方式

1. 声明式事务(推荐)

<!-- XML配置 -->
<tx:annotation-driven transaction-manager="txManager"/><bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/>
</bean>
// 注解驱动
@Configuration
@EnableTransactionManagement
public class AppConfig {@Beanpublic PlatformTransactionManager transactionManager(DataSource ds) {return new DataSourceTransactionManager(ds);}
}

2. 编程式事务

transactionTemplate.execute(status -> {try {userDao.update(user1);logDao.insert(log);return true;} catch (Exception e) {status.setRollbackOnly();return false;}
});

四、@Transactional详解

属性配置

@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.READ_COMMITTED,timeout = 30,readOnly = false,rollbackFor = {BusinessException.class},noRollbackFor = {SystemException.class}
)
public void businessMethod() { ... }

传播行为(Propagation)

行为类型说明
REQUIRED(默认)存在事务则加入,没有则新建
REQUIRES_NEW总是新建事务,挂起当前事务
NESTED嵌套事务,使用保存点实现部分回滚
SUPPORTS存在事务则加入,没有则以非事务运行
NOT_SUPPORTED非事务执行,挂起当前事务
MANDATORY必须存在事务,否则抛异常
NEVER必须非事务执行,否则抛异常

隔离级别(Isolation)

级别脏读不可重复读幻读说明
READ_UNCOMMITTED最低隔离级别
READ_COMMITTED(默认)×避免脏读
REPEATABLE_READ××MySQL默认级别
SERIALIZABLE×××最高隔离级别

五、事务失效场景

  1. 非public方法:基于代理的AOP无法拦截private方法
  2. 自调用问题:类内部方法调用不会经过代理对象
    解决方案
    @Autowired
    private ApplicationContext context;public void methodA() {context.getBean(ThisClass.class).methodB();
    }
    
  3. 异常类型不匹配:默认只回滚RuntimeException和Error
  4. 多线程调用:不同线程属于不同事务上下文
  5. 错误捕获异常:catch后未重新抛出
    try { ... } 
    catch (Exception e) {// 需添加:throw new RuntimeException(e);
    }
    

六、高级特性

1. 事务同步

TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {@Overridepublic void afterCommit() {// 事务提交后操作}});

2. 多数据源事务

@Bean
@Primary
public PlatformTransactionManager primaryTM(DataSource ds1) {return new DataSourceTransactionManager(ds1);
}@Bean
public PlatformTransactionManager secondaryTM(DataSource ds2) {return new DataSourceTransactionManager(ds2);
}// 使用指定事务管理器
@Transactional(transactionManager = "secondaryTM")
public void crossDatabaseOp() {...}

七、最佳实践

  1. 事务方法保持简短,避免远程调用
  2. 明确指定rollbackFor属性
  3. 只读查询添加@Transactional(readOnly=true)
  4. 嵌套事务使用PROPAGATION_NESTED
  5. 监控事务执行时间(超过3秒需优化)

文章转载自:

http://WYcNnsTN.zwgbz.cn
http://lSkGnvnV.zwgbz.cn
http://vegIp03D.zwgbz.cn
http://NSikviKl.zwgbz.cn
http://UsxEbDIu.zwgbz.cn
http://g8E2wikN.zwgbz.cn
http://EsoUfg0K.zwgbz.cn
http://yf9e7Jhw.zwgbz.cn
http://6jcB98rA.zwgbz.cn
http://DPunXGx4.zwgbz.cn
http://KJRpL0Iz.zwgbz.cn
http://lFdaz9o0.zwgbz.cn
http://aJyMESdM.zwgbz.cn
http://cYTp1CtL.zwgbz.cn
http://ujmRtMsT.zwgbz.cn
http://FNoYdj6X.zwgbz.cn
http://3xnJHL3Q.zwgbz.cn
http://T2ixXniK.zwgbz.cn
http://ENAWm833.zwgbz.cn
http://kaUgSYsQ.zwgbz.cn
http://GTgfypnU.zwgbz.cn
http://kRgEtXcp.zwgbz.cn
http://nFWLzJv5.zwgbz.cn
http://xNTCPp2s.zwgbz.cn
http://F5Wzseca.zwgbz.cn
http://Z8UQrgS7.zwgbz.cn
http://Hih9WgaT.zwgbz.cn
http://GNojKlRj.zwgbz.cn
http://O9mSSuZ3.zwgbz.cn
http://wT25CxHf.zwgbz.cn
http://www.dtcms.com/wzjs/631046.html

相关文章:

  • 电子书网站搭建教程微信支付开发者平台
  • 网站 图片 自动往右移公司企业网页
  • 龙岗网站开发公司淮北市建筑
  • 做教师章节试题哪个网站内蒙古建设工程信息服务平台
  • 做网站不给源代码可用来制作网页的软件
  • 网站建设网络推广销售网页设计实训班
  • 备案没有商城可以做商城网站吗郑州app拉新项目
  • 站长查询seo是什么意思东莞网站外包
  • 已经有域名 怎么修改网站移动互联网时代的到来为很多企业提供了新的商业机会
  • 深圳网站制作建设公司推荐合肥制作企业网站
  • 网站开发 asp.net php网络推广培训中心
  • 网站的总体方案与功能设计上海物联网app开发公司
  • 请问如何做网站分销商城平台开发
  • 昆山网站建设苦瓜中铁建设集团门户网登录不上去
  • 怎么制作网站栏目页主页固定在网站底部
  • 网站建设公司推怎么给自己网站做搜索框
  • 上海元山建设有限公司网站深圳品牌设计公司哪家好
  • 如何关联网站与网站多多返利网站建设程序
  • 做电影网站有什么好处和坏处长春市制作网站费用
  • 网站推他网站线上营销的好处
  • gg服务器租用网站好用的wordpress
  • 做网站推广的销售电话开场白Wordpress如何接入visa支付
  • wordpress 好用插件深圳优化公司找高粱seo服务
  • 做网站可以卖别的牌子的产品吗企业网站建设属于什么科目
  • 企业在网站建设上的不足有哪些是外国人做的网站吗
  • 新手做电影网站好wordpress中文模板下载
  • 网站建设历史装修案例
  • 企业seo外包网站排名seo
  • 捡个校花做老婆是哪个网站的大连制作网站多少钱
  • 类似快手网站开发买了万网的域名跟定制网站还要买空间吗