读了 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() 方法。
分享到:
相关推荐
4. 财务报告预兆信号:异常的外部环境(如行业衰退、经济环境恶化)或内部环境(如频繁更换会计师事务所、会计政策异常调整)都可能是财务陷阱的预兆。 5. 现场调查的重要性:现场调查能直接获取第一手信息,核对...
### NoSQL误用和常见陷阱分析 ...总的来说,在选择NoSQL数据库之前,应该对其特性和限制有足够的了解,避免掉入上述提到的各种陷阱。同时,也应该考虑现有团队的技术背景和未来的业务发展方向,做出更加合理的选择。
合同审查确保所有签订的合同都符合法律标准,避免合同陷阱;知识产权保护则关乎企业的创新成果不被侵犯;纠纷处理机制用于解决企业内部或与外界的法律纠纷;合规审计则定期检查企业各项活动的合法性。 3. **法律...
《北京XX律师事务所尽职调查报告》是一份深入剖析XX有限公司法律状况的专业文档,旨在为教育领域的相关决策提供详实的法律依据。报告分为多个部分,涵盖了公司的法律事实与法律评价,以确保全面理解公司的运营环境和...
- 面试陷阱:面试官可能会问到如何执行SQL语句,或者事务的ACID属性。 - 解析:JDBC是Java访问数据库的标准API,包括连接数据库、执行SQL、处理结果集等步骤。理解ACID(原子性、一致性、隔离性、持久性)是数据库...
在实际操作层面,高校可以通过举办讲座、工作坊等形式,提升学生的信息素养,教导他们如何在海量信息中筛选有价值的内容,避免网络陷阱。同时,通过签订电子协议、制定在线行为规范,使学生明确自身的权利和义务,...
1. 增强合同法律知识:通过培训或自学了解合同法律的基本规则和条款的法律效力。 2. 详细审查合同条款:逐条审阅合同,确保条款表达清晰、权利义务对等。 3. 明确合同履行条件:确保合同中明确规定各方的权利义务和...
了解并能正确运用synchronized关键字、wait/notify机制、ReentrantLock等工具至关重要。 Java集合框架是另一个常考领域,包括ArrayList、LinkedList、HashMap、TreeMap等容器的特性与使用场景,以及如何进行高效的...
7. 最佳实践和常见陷阱:分享在ASP.NET事务和异常处理中应避免的常见错误,以及推荐的最佳实践。 这个视频教程对于那些想要提升ASP.NET开发技能,尤其是关注数据安全和系统稳定性的开发者来说,是非常有价值的资源...
通过了解并避免这些陷阱,创业者可以编写出更具说服力和实施性的商业计划书,提高获得投资和成功启动项目的可能性。记住,商业计划书不仅仅是一份文档,它是企业未来行动的指南,需要认真对待每一个细节。
- **如何(不)开发数据库应用程序**:提供了一套实用指南,指导开发人员在开发过程中避免常见的陷阱,并推荐最佳实践。 - **理解Oracle架构**:深入解析Oracle数据库的基本架构,包括其组件、工作方式及相互之间的...
2. **AOP(面向切面编程)**:了解如何使用Spring的AOP模块实现横切关注点,如日志记录、性能监控和事务管理,使代码更加模块化和可维护。 3. **Spring MVC**:深入学习Spring MVC,这是一个强大的用于构建Web应用...
对原有代码的重构的目的是通过搬迁、提炼、打散、凝聚等方法,改善事务的体质、强化当前的可读性、为将来的扩充性和维护性做准备、乃至于在过程中找出潜在的“臭虫”。重构可以提高代码的质量和可维护性,降低出错的...
### 服务器编程接口 (SPI) 知识点详解 #### 一、服务器编程接口 (SPI) 概述 **服务器编程接口(SPI)**是一种专为数据库开发人员...此外,正确使用SPI中的内存管理和事务管理功能对于避免常见的编程陷阱至关重要。
6. 事务的陷阱 事务管理对于保持数据库的一致性至关重要。需要注意: - 事务应尽可能短小,减少并发问题和回滚风险。 - 使用BEGIN TRANSACTION、COMMIT和ROLLBACK语句来明确事务边界。 - 了解并避免长时间锁定,...
最后,书中还会讨论MyBatis的最佳实践和常见问题,帮助读者避免在开发过程中遇到的陷阱,提升代码质量。 总之,《深入浅出MyBatis技术原理与实战》是学习MyBatis的理想资料,它将带你从零开始,逐步掌握MyBatis的...
4. **培训开发人员和DBA团队**:确保他们了解如何正确使用事务处理机制以及如何避免常见的死锁陷阱。 通过上述方法和技术,可以有效地管理和解决Oracle数据库中的解锁与死锁问题,从而提高系统的稳定性和效率。
10. **最佳实践**:除了技术讲解,书中的最佳实践部分将指导读者遵循良好的编程习惯,避免常见陷阱,提高开发效率。 通过对《Spring 3.x企业应用开发实战》的深入学习,开发者不仅可以掌握Spring框架的核心技术,还...