读了 IBM developerWorks 上的文章:“事务策略: 了解事务陷阱
”,总结一下。
-
在使用 Spring 的事务注释的时候,还要在配置文件中加入
<tx:annotation-driven transaction-manager="transactionManager"/>
使用过 Spring 的事务注释的应该都知道这一条。
- 只读操作不用设置事务。我怎么记得只读也是需要设置事务的,这是为了保证读操作不会其它事务中间状态的数据。对于某些领域的应用,比如金融,这一条是很重要的。当然,如果这一点并不重要,对于读操作不设置事务,是可以提高性能的。
-
如果没有事务,使用 ORM 执行的写操作通常是不会执行的,除非你执行 flush 操作。
- 要注意,不要随便使用 REQUIRES_NEW。在使用 REQUIRES_NEW 事务属性时,如果存在现有事务上下文,当前的事务会被挂起并启动一个新事务。方法结束后,新的事务被提交,原来的事务继续执行。通常情况使用 REQUIRES 就行了,但文中也介绍了一个需要使用 REQUIRES_NEW 场景。总结一下,就是当某个操作与其调用操作相对独立的时候,即这个操作成功与否并不取决于其父操作是否成功,这个时候就要考虑使用 REQUIRES_NEW 了。
- 对于 Spring 和 EJB3 的事务注释,默认情况下,只有 Runtime Exception 发生时才会回滚事务。所以,下面这段代码是不会有事务回滚的。
@Transactional(propagation=Propagation.REQUIRED)
public TradeData placeTrade(TradeData trade) throws Exception {
try {
insertTrade(trade);
updateAcct(trade);
return trade;
} catch (Exception up) {
//log the error
throw aCheckedException;
}
}
Spring 可以通过 @Transactional
注释中的 rollbackFor
参数进行改变默认规则;EJB3 需要用 EntityManager 的 setRollbackOnly() 方法。
分享到:
相关推荐
事务传播特性了解事务的几种传播特性 总共有七种propagation——required propagation——support propagation——mandatory propagation——not——supported propagation_required_new propagation_never ...
但是,一旦SQL SERVER发生崩溃时,了解事务日志的原理和概念对于快速做出正确的决策来恢复数据显得尤为重要.本系列文章将会从事务日志的概念,原理,SQL Server如何使用日志来确保持久性属性等方面来谈SQL Server的...
本代码使用H2内存数据库演示spring事务使用,包括编程式事务,声明式事务@Transactional使用,自定义事务事务注解实现自定义事务管理器
本文来自于csdn,本文主要从分布式的原因,事务特性,和解决方案中深入理解了分布式事务,希望对您的学习有所帮助。 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的...
本文的目的是要提供一个关于的Java事务处理API(JTA)的高级的概述,以及与分布式事务相关的内容。一个事务处理定义了一个工作逻辑单元,要么彻底成功要么不产生任何结果。 一个分布式事务处理只是一个在两个或更多...
数据库事务总结数据库事务总结数据库事务总结数据库事务总结
这里面包含SAP的所有事务代码,并有相应介绍和解释,非常全面,并可轻松查找你想了解的任何事务
关于mysql的事务处理 public static void StartTransaction(Connection con, String[] sqls) throws Exception { if (sqls == null) { return; } Statement sm = null; try { // 事务开始 System....
但是,一旦SQL SERVER发生崩溃时,了解事务日志的原理和概念对于快速做出正确的决策来恢复数据显得尤为重要.本系列文章将会从事务日志的概念,原理,SQL Server如何使用日志来确保持久性属性等方面来谈SQL Server的...
Spring2.5实现事务管理(本地事务、分布式事务).doc
MM常用事务代码MM常用事务代码MM常用事务代码MM常用事务代码
介绍事务的基本知识,了解事务,附件包含实现事务机制的相关的代码。
方法被调用时自动开启事务,在事务范围内使用则使用同一个事务,否则开启新事务。 2、Propagation.REQUIRES_NEW 无论何时自身都会开启事务 3、Propagation.SUPPORTS 自身不会开启事务,在事务范围内则...
kettle使用事务的转换
spring事务与数据库操作
介绍了Docker的使用,通过Docker将课程环境搭建起来,方便那些不了解这些技术的同学之后的学习。 3-1 docker简介与mysql安装-1 3-2 docker简介与mysql安装-2 3-3 SpringBoot基础 第4章 Spring事务机制 介绍了Spring...
1.基础概念:了解事务的ACID、CAP理论、BASE理论,为分布式方案打基础 2.2PC/3PC:通过2PC演化各种方案:XA方案、JTA、LCN、Seata 3.TCC:TCC不依赖本地事务的解决方案 4.可靠消息最终一致性:唯有了解方案原理,方能...
事务控制事务控制事务控制事务控制
结合目前事务处理的精华,我开发了太极分布式事务处理框架TJDTP,采用可靠消息服务和重试、补偿处理机制,使用事件驱动、最终一致的事务模型,巧妙地运用数据库的事务处理能力,对服务操作结果进行判断,调用应用...
mysql事务处理的意义 事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全,例如在银行处理转账业务时,如果A账户中的金额刚被发出,而B账户还没来得及接收就发生停电,这会给银行和个人带来...