事务对于确保数据的完整性与分歧性是至关重要的。要想完全了解事务,必须得熟悉一些基本概念、模型还有策略。Mark Richards说到“混杂事务模型与事务策略是个罕见错误”。这篇文章谈到了“Java™平台所支持的三种事务模型并对基于这些模型的四种主要事务策略展开了讨论。经过使用Spring Framework及Enterprise JavaBeans(EJB)3.0的一些示例,Mark引见了事务模型的工作方式及他们缘何能作为从基本的事务处理到高速事务处理零碎的基石” 。
Java平台支持三种事务模型:
* 本地事务模型——事务由DB资源而不是使用容器或框架管理。开发者管理连接而不是事务。
* 编程式事务模型——开发者从事务管理器中获取事务,之后需求自己编写事务启动、提交、异常及回滚代码。
* 声明式事务模型——最罕见的模型,又叫做容器管理事务。在这种模型下,容器管理着事务,开发者定义(声明)事务的行为和参数。
但这种支持仅能描绘事务基本信息和希冀行为以及使用的语法和规则。事务策略能够解决如下成果:何时需求使用REQUIRED或MANDATORY属性、特定的指令、使用哪种模型及如何对特定的情况进行优化。
Mark在之前的一篇文章中讨论了事务模型的优势与圈套。
这篇文章引见了使用特定模型的策略及如何以恰当的方式使用模型。下面列出了这四个策略:
* 在客户端发出了多个基于效劳器或基于模型的调用来完成一个单独的工作单元时需求使用客户端编排(Client Orchestration)事务策略。
* 在对后端调用的主要入口办法是粗粒度(假如你情愿可以称其为效劳)的情况下需求使用API层事务策略。
* 高并发事务策略是下面策略的一个变种,在使用无法支持长事务的情况下需求使用该策略(通常基于功用和可伸缩性思索)。
* 高速处理事务策略也许是最极端的一种事务策略了。
艾维家纺假如使用需求最快的处理工夫(以及吞吐量),同时还要在处理过程中坚持一定的事务原子性,那么可以使用该策略。
TAG:
事务