`
echohfut
  • 浏览: 233123 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

事务模型和事务策略

阅读更多

详见: 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 事务策略
  • 分享到:
    评论

    相关推荐

      WCF事务模型

      - **服务端事务控制**:使用`TransactionFlowAttribute`、`ServiceBehaviorAttribute`和`OperationBehaviorAttribute`特性来指定事务策略。 - `TransactionFlowAttribute`:控制方法是否参与事务。 - `...

      Java事务设计模式_java_事务设计模式_

      本文将深入探讨Java中的事务设计策略,包括本地事务模型、编程式事务模型、声明式事务模型以及几种事务设计模式。 首先,我们来理解事务的基本概念。事务是数据库操作的基本单元,它保证了一组操作要么全部成功,...

      中天会计事务所马尔可夫模型例题.pdf

      在此背景下,中天会计事务所通过建立马尔可夫模型,旨在合理预测未来人力资源的流动和配置。 实施马尔可夫模型的第一步是收集和整理历史数据。在中天会计事务所的具体例子中,通过周期性统计历年各职位员工的离职、...

      Java事务设计策略.

      综上所述,Java事务设计策略涉及多种不同的事务模型和技术,每种模型和技术都有其适用场景和优势。理解这些基本概念和最佳实践对于构建健壮、可靠的企业级Java应用程序至关重要。开发者可以根据具体的应用需求和环境...

      利用地图文档模拟的地图编辑事务模型.docx

      【地图编辑事务模型】在移动互联网时代,随着地理信息服务需求的激增,地图的现势性和更新速度成为了关键。地图编辑工作变得尤为重要,它占据了地图制图过程中的大部分时间。为了提升效率,【协同制图】应运而生,...

      技能大赛分布式数据库多事务调控模型构建.pdf

      文档的标题为“技能大赛分布式数据库多事务调控模型构建”,而标签包含了“分布式”、“分布式系统”、“分布式开发”和“专业指导”等内容。以下是对这些知识点的详细说明: 分布式数据库是数据库技术和分布式计算...

      分布式事务管理模型的性能改进技术研究.pdf

      在性能改进方面,合理的架构设计和事务管理策略至关重要。例如,采用两阶段提交(2PC)协议或者三阶段提交(3PC)协议来保证分布式事务的原子性。除此之外,还可以通过数据库连接池管理、异步事务处理、事务日志优化...

      java事务设计模式

      在Java中,事务处理主要涉及事务模型的选择、ACID特性的应用以及JTA(Java Transaction API)和JTS(Java Transaction Service)的角色。事务模型决定了如何在多个操作之间维护一致性。ACID特性是事务处理的基础,...

      基于本地封闭式世界假设的分布式系统事务模型.pdf

      传统的数据库事务模型强调了ACID属性,即原子性、一致性、隔离性和持久性。这些属性为数据库提供了一个可靠的数据管理机制,使得事务要么全部成功,要么全部失败,从而保证了数据的完整性和可靠性。然而,在大规模...

      一种分布式事务数据的差分隐私发布策略

      文章介绍了一种适用于分布式环境下的事务数据发布策略,该策略基于差分隐私的约束,通过构建一个分布式非线性规划模型来实现。这个模型结合了差分隐私的要求和结果效用的优化,旨在最大化发布数据的效用,同时不违反...

      分布式数据库事务分类策略研究.pdf

      他们分析了分布式数据库的查询代价模型,旨在减少查询事务的执行时间,提高并发查询效率。 首先,策略的核心是利用层次聚类算法对查询事务进行分类。层次聚类是一种迭代方法,它将事务根据其相似性归类到同一簇中。...

      计算机网络防御策略模型.pdf

      通过对计算机网络防卫策略模型的研究和分析,我们可以得出结论:计算机网络防卫策略模型能够很好地实现计算机网络的防卫作用,效果较好。但是,这个模型也存在一定的弊端和不足之处,需要在实际应用中不断完善和改进...

      论文研究-嵌套事务的正确性及锁协议.pdf

      嵌套事务模型的一个重要特性是子事务可以嵌套在父事务之内,并且每个子事务都拥有自己的原子性、一致性、隔离性和持久性(ACID)属性。 在嵌套事务模型中,正确性的描述主要是指确保事务执行过程中的ACID属性能够被...

      [[分布式事务]]支付宝分布式事务设计草案.doc

      总的来说,支付宝的分布式事务设计旨在确保在多服务协作中的数据一致性,通过两阶段提交协议和最末参与者优化策略来协调服务间的操作,同时借鉴X/Open模型的标准接口,实现高效且可靠的事务管理。在遇到标准框架无法...

      大规模SOA系统中的分布式事务处事

      为了解决这些问题,出现了许多优化策略,如三阶段提交(3PC)、基于补偿的事务(Saga)和最终一致性模型。三阶段提交通过增加预提交阶段,降低了阻塞的概率。Saga是一种长事务的解决方案,它将大事务拆分为一系列小...

      分布式事务源代码

      7. **NoSQL数据库的分布式事务**:NoSQL数据库通常不支持ACID(原子性、一致性、隔离性、持久性)事务,但有些提供CAP(可用性、一致性、分区容错性)理论下的事务模型,如Cassandra的SSTable-Ordered Transactions...

    Global site tag (gtag.js) - Google Analytics