- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
事务策略之事务模型
开发人员、设计人员和架构师经常会混淆事务模型 与事务策略。我经常会让与客户接触的架构师和技术总监描述他们项目的事务策略。我通常会获得三种回应。有时,他们会说 “我们实际上并未在应用程序中使用事务。”另一些时候,我会听到迷惑的回答:“我不明白你的意思。”但是,我也会遇到非常自信的回答:“我们使用声明式事务。”在本文中,术语声明式事务 描述的是一个事务模型,但它绝不是一种事务策略。
关于本系列
事务将改善您数据的质量、完整性以及一致性,并且让您的应用程序更加可靠。在 Java 应用程序中实现成功的事务处理并不是一项轻松的任务,它是一项与编写代码相关的设计工作。 在这个新的 HYPERLINK /developerworks/cn/views/java/libraryview.jsp?search_by=%E4%BA%8B%E5%8A%A1%E7%AD%96%E7%95%A5 系列 中,Mark Richards 将指导您设计一个有效的事务策略,它适用于各种用例,从简单的应用程序到高级性能事务处理。
Java 平台支持的三种事务模型包括:
Local Transaction 模型
Programmatic Transaction 模型
Declarative Transaction 模型
这些模型描述事务在 Java 平台中的基本运行方式,以及它们是如何实现的。但是,它们仅提供了事务处理的规则和语义。如何应用事务模型则完全由您决定。举例来说,应该如何在 REQUIRED 和 MANDATORY 事务属性之间做出选择?您应该在何时何种情况下指定事务回滚指令?您应该在何时考虑 Programmatic Transaction 模型与 Declarative Transaction 模型的优劣?您应该如何优化高性能系统的事务?事务模型本身无法回答这些问题。您必须通过开发自己的事务策略或采用本文介绍的四种主要事务策略之一来解决它们。
如本系列的 HYPERLINK /developerworks/cn/java/j-ts1.html 第一篇文章 所述,许多常见的事务陷阱都会影响到事务行为,并且由此会降低数据的完整性和一致性。同样,缺乏有效的(或任何)事务策略将对您数据的完整性和一致性造成负面影响。本文所描述的事务模型是开发有效事务策略的基本元素。理解这些模型之间的差异以及它们的运行方式对于理解使用它们的事务策略非常重要。在介绍完三种事务模型之后,我将讨论适用于大多数业务应用程序(从简单的 Web 应用程序到大型的高速事务处理系统)的四种事务策略。 HYPERLINK /developerworks/cn/views/java/libraryview.jsp?search_by=%E4%BA%8B%E5%8A%A1%E7%AD%96%E7%95%A5 事务策略 系列的后续文章将详细讨论这些策略。
Local Transaction 模型
在 Local Transaction 模型中,事务由底层数据库资源管理程序(而非应用程序所在的容器或框架)管理,这便是它得名的原因。在这个模型中,您将管理连接,而不是事务。从 “ HYPERLINK /developerworks/cn/java/j-ts1.html 了解事务陷阱” 一文可知,在使用对象关系映射框架,如 Hibernate、TopLink 或 the Java Persistence API (JPA),执行数据库更新时,您不能使用 Local Transaction 模型。在使用数据访问对象(DAO)或基于 JDBC 的框架和数据库存储过程时,您可以使用它。
您可以采用以下两种方式来使用 Local Transaction 模型:让数据库来管理连接,或者以编程的方式管理连接。要让数据库管理连接,您需要将 JDBC Connection 对象上的 autoCommit 属性设置为 true(默认值),这将通知底层数据库管理系统(DBMS)在完成插入、更新或删除操作之后提交事务,或者在操作失败时返回任务。清单 1 展示了这种技巧,它在 TRADE 表中插入了一条股票交易命令:
清单 1. 包括一个更新的本地事务
public class TradingServiceImpl {
public void processTrade(TradeData trade) throws Exception {
Connection dbConnection = null;
try {
DataSource ds = (DataSource)
(new InitialContext()).
您可能关注的文档
最近下载
- 中药饮片处方审核培训课件.pptx VIP
- 超星网课《逻辑学导论》超星尔雅答案2023章节测验答案.doc VIP
- 恩格斯《路德维希-·-费尔巴哈和德国古典哲学的终结》.doc VIP
- 2024年款 上汽通用别克 昂科威Plus 车主手册用户手册说明书.pdf VIP
- 电容器带电粒子在电场中的运动-2025高考物理复习热点题型讲义.pdf VIP
- 云南省小粒咖啡出口贸易问题及对策.docx VIP
- !24J306图集窗井、设备吊装口、排水沟、集水坑.pdf VIP
- 初中数学经典题型.pdf VIP
- 水总2014429号水利工程设计概估算编制规定.doc
- 9《复活》课件(共41张PPT)(含音频+视频).pptx VIP
原创力文档


文档评论(0)