详见: http://www.ibm.com/developerworks/cn/java/j-ts2.html
一. 事务模型:
1. Local Transaction 模型
JDBC 本地事务,
dbConnection.setAutoCommit(true);
在本地事务模型中,事务由底层数据库(DBMS)或消息提供者(Message Provider)来管理维护,从开发者的角度来看,只需要管理使用连接(connections)而不需要管理事务。本地事务模型在小型工程的简单更新操作中能够很好地工作,但是在更加复杂的应用场景下,一个问题是在一个 XA 全局事务中难以协调各资源的工作。 一般情况下,EJB 工程不使用这样的事务模型.
2. Programmatic Transaction 模型
EJB中Bean管理事务
在编程式事务模型中,开发者不再面向连接而是面向事务进行开发。在 EJB 工程中这类事务模型体现为 Bean 管理的事务(Bean-Managed Transactions--BMT). 一般通过sessionContext或者JNDI中获取UserTransaction。编程式事务模型存在一个重大的架构上的限制:我们不能在两个都使用编程式事务模式的 Bean 之间传递事务上下文(transaction context)。不过,我们可以将一个使用编程式事务模型的 EJB 或客户端的事务上下文传递给一个使用声明式事务模型的 EJB。因此在一般情况下,我们仅在调用 EJB 的客户端中使用编程式事务模型。
Spring中获取平台事务管理程序,commit() or rollback()
3. Declarative Transaction 模型
在声明式事务模型中,由容器来管理维护事务,这意味着开发者不需要通过写 Java 代码来开始或提交一个事务,取而代之的是使用一定的“声明”告诉容器如何来管理事务。我们可以通过 ejb-jar.xml 配置文件来实现对容器的声明,同样也可以使用注释或部署描述符来声明使用事务。在 EJB 中,声明式的事务模型体现为容器管理的事务(Container-Managed Transactions--CMT)。
Container Managed Transactions (CMT)
Spring 使用 @Transactional
注释,而 EJB 3.0 使用 @TransactionAttribute
注释。在使用 Declarative Transaction 模型时,容器将不会针对检测到的异常自动回滚事务。开发人员必须指定出现异常时在何处以及何时回滚事务。在 Spring Framework 中,您通过使用 @Transactional
注释上的 rollbackFor
属性来指定它。在 EJB 中,您通过调用 SessionContext
上的 setRollbackOnly()
方法来指定它。
在大部分情况下,我们在实现 EJB 的时候使用声明式的事务模型(即 CMT),而在调用这些 EJB 的客户端代码中使用编程式的事务模型。
二. 事务策略
Client Orchestration 事务策略
API Layer 事务策略
High Concurrency 事务策略
High-Speed Processing 事务策略
分享到:
相关推荐
- **服务端事务控制**:使用`TransactionFlowAttribute`、`ServiceBehaviorAttribute`和`OperationBehaviorAttribute`特性来指定事务策略。 - `TransactionFlowAttribute`:控制方法是否参与事务。 - `...
本文将深入探讨Java中的事务设计策略,包括本地事务模型、编程式事务模型、声明式事务模型以及几种事务设计模式。 首先,我们来理解事务的基本概念。事务是数据库操作的基本单元,它保证了一组操作要么全部成功,...
综上所述,Java事务设计策略涉及多种不同的事务模型和技术,每种模型和技术都有其适用场景和优势。理解这些基本概念和最佳实践对于构建健壮、可靠的企业级Java应用程序至关重要。开发者可以根据具体的应用需求和环境...
【地图编辑事务模型】在移动互联网时代,随着地理信息服务需求的激增,地图的现势性和更新速度成为了关键。地图编辑工作变得尤为重要,它占据了地图制图过程中的大部分时间。为了提升效率,【协同制图】应运而生,...
文档的标题为“技能大赛分布式数据库多事务调控模型构建”,而标签包含了“分布式”、“分布式系统”、“分布式开发”和“专业指导”等内容。以下是对这些知识点的详细说明: 分布式数据库是数据库技术和分布式计算...
公司应对此采取措施,如查明离职原因并采取改善措施,加强培训和发展计划,提高员工满意度,以及提前规划招聘策略,以确保人力资源的有效配置和稳定运营。 总结来说,马尔可夫模型是中天会计事务所在人力资源管理中...
在性能改进方面,合理的架构设计和事务管理策略至关重要。例如,采用两阶段提交(2PC)协议或者三阶段提交(3PC)协议来保证分布式事务的原子性。除此之外,还可以通过数据库连接池管理、异步事务处理、事务日志优化...
传统的数据库事务模型强调了ACID属性,即原子性、一致性、隔离性和持久性。这些属性为数据库提供了一个可靠的数据管理机制,使得事务要么全部成功,要么全部失败,从而保证了数据的完整性和可靠性。然而,在大规模...
文章介绍了一种适用于分布式环境下的事务数据发布策略,该策略基于差分隐私的约束,通过构建一个分布式非线性规划模型来实现。这个模型结合了差分隐私的要求和结果效用的优化,旨在最大化发布数据的效用,同时不违反...
他们分析了分布式数据库的查询代价模型,旨在减少查询事务的执行时间,提高并发查询效率。 首先,策略的核心是利用层次聚类算法对查询事务进行分类。层次聚类是一种迭代方法,它将事务根据其相似性归类到同一簇中。...
通过对计算机网络防卫策略模型的研究和分析,我们可以得出结论:计算机网络防卫策略模型能够很好地实现计算机网络的防卫作用,效果较好。但是,这个模型也存在一定的弊端和不足之处,需要在实际应用中不断完善和改进...
嵌套事务模型的一个重要特性是子事务可以嵌套在父事务之内,并且每个子事务都拥有自己的原子性、一致性、隔离性和持久性(ACID)属性。 在嵌套事务模型中,正确性的描述主要是指确保事务执行过程中的ACID属性能够被...
总的来说,支付宝的分布式事务设计旨在确保在多服务协作中的数据一致性,通过两阶段提交协议和最末参与者优化策略来协调服务间的操作,同时借鉴X/Open模型的标准接口,实现高效且可靠的事务管理。在遇到标准框架无法...
为了解决这些问题,出现了许多优化策略,如三阶段提交(3PC)、基于补偿的事务(Saga)和最终一致性模型。三阶段提交通过增加预提交阶段,降低了阻塞的概率。Saga是一种长事务的解决方案,它将大事务拆分为一系列小...
7. **NoSQL数据库的分布式事务**:NoSQL数据库通常不支持ACID(原子性、一致性、隔离性、持久性)事务,但有些提供CAP(可用性、一致性、分区容错性)理论下的事务模型,如Cassandra的SSTable-Ordered Transactions...