当前位置: 首页 > 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://www.dtcms.com/wzjs/537397.html

相关文章:

  • 商城购物网站建设方案手机自适应网站建设维护
  • 网站站外链接实用设计网站推荐
  • 网站头部固定万州电商网站建设
  • 设计素材网站都是有哪几个网络规划设计师如何聘副高职称
  • 国内优秀的个人网站wordpress提交表单插件
  • 网站开发有什么用专业公司网站制作公司
  • 微信电商网站开发万网账号跟网站有关系吗
  • 网站建设案例如何天津网站制作西安
  • 长宁网站建设优化seo二级分销最佳佣金比例
  • 网站关键字排名怎么做网站变灰兼容代码
  • 哪些网站可以做自媒体百度上如何做优化网站
  • 做食品研发都有哪些网站企业门户网站功能列表
  • 长春市住房城乡建设厅网站更新网站的步骤
  • 清远市seo网站设计联系方式珠海移动网站设计
  • 四川省住房建设厅网站打不开辽宁省建设工程信息网排名
  • 网站开发技术指标与参数跨境电商出口平台有哪些?
  • 成都专业网站建设费用wordpress 能承受多大并发访问量
  • 网站开发付款一叶子电子商务网站建设策划书
  • 如何做网站淘客网站管理助手3.0
  • 广州市网站建设哪里有line 设计网站
  • 免费网站你知道我的意思的动漫设计与制作都学什么
  • 怎么做网站弄网盟免费推广引流app
  • 微网站建设套餐找厂家采购什么平台
  • 池州网站建设费用惠州+企业网站建设
  • 池州网站建设有哪些公司找团队做网站需要明确哪些东西
  • 个人什么取消网站备案装修设计效果图免费软件
  • 那个网站做图片比较赚钱厦门成交型网站建设公司
  • 文登住房和建设局网站郑州app软件定制开发
  • 做设计的网站有哪些定制类网站
  • 北京城乡建设和住房门户网站使用angularjs的网站