BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

基于Java事务模型的事务策略

| 作者 Dave West 关注 0 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2009年4月14日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

事务对于确保数据的完整性与一致性是至关重要的。要想完全理解事务,必须得熟悉一些基本概念、模型还有策略。Mark Richards说到“混淆事务模型与事务策略是个常见错误”。这篇文章谈到了“Java™平台所支持的三种事务模型并对基于这些模型的四种主要事务策略展开了讨论。通过使用Spring Framework及Enterprise JavaBeans(EJB)3.0的一些示例,Mark介绍了事务模型的工作方式及他们缘何能作为从基本的事务处理到高速事务处理系统的基石” 。

Java平台支持三种事务模型:

  • 本地事务模型——事务由DB资源而不是应用容器或框架管理。开发者管理连接而不是事务。
  • 编程式事务模型——开发者从事务管理器中获取事务,之后需要自己编写事务启动、提交、异常及回滚代码。
  • 声明式事务模型——最常见的模型,又叫做容器管理事务。在这种模型下,容器管理着事务,开发者定义(声明)事务的行为和参数。

但这种支持仅能描述事务基本信息和期望行为以及使用的语法和规则。事务策略能够解决如下问题:何时需要使用REQUIRED或MANDATORY属性、特定的指令、使用哪种模型及如何对特定的情况进行优化。

Mark在之前的一篇文章中讨论了事务模型的优势与陷阱

这篇文章介绍了使用特定模型的策略及如何以恰当的方式使用模型。下面列出了这四个策略:

  • 在客户端发出了多个基于服务器或基于模型的调用来完成一个单独的工作单元时需要使用客户端编排(Client Orchestration)事务策略。
  • 在对后端调用的主要入口方法是粗粒度(如果你愿意可以称其为服务)的情况下需要使用API层事务策略。
  • 高并发事务策略是上面策略的一个变种,在应用无法支持长事务的情况下需要使用该策略(通常基于性能和可伸缩性考虑)。
  • 高速处理事务策略也许是最极端的一种事务策略了。如果应用需要最快的处理时间(以及吞吐量),同时还要在处理过程中保持一定的事务原子性,那么可以使用该策略

Mark Richards是InfoQ迷你书Java Transaction Design Patterns的作者,本书对该主题进行了更细致的讲解。

查看英文原文:Transaction Strategies Based on Java Transaction Models

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

回复:基于Java事务模型的事务策略 by Chen Michael

最好有具体的应用说明

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT