WEB开发网
开发学院软件开发Java Java 理论与实践: 理解 JTS —— 事务简介 阅读

Java 理论与实践: 理解 JTS —— 事务简介

 2010-03-22 00:00:00 来源:WEB开发网   
核心提示: 如果您使用原来的 C 语言编写这个方法,则对于每个操作(打开输入、打开输出、malloc、读、写),Java 理论与实践: 理解 JTS —— 事务简介(8),必须测试返回状态,如果操作失败,而不正确地使用事务资源可能会造成非常严重的性能问题,在此系列的第 3 部分中,则取消以前成功的所有操作,

如果您使用原来的 C 语言编写这个方法,则对于每个操作(打开输入、打开输出、malloc、读、写),必须测试返回状态,如果操作失败,则取消以前成功的所有操作,并返回适当的状态代码。由于需要这么多错误处理代码,该代码可能更大,因此更难阅读。同时在错误处理代码(它也是最难测试的部分)中很容易出错,比如不能释放资源、对一个资源释放两次或者释放尚未分配的资源。更复杂的方法可能涉及更多资源,而不仅仅是两个文件和一个缓冲区,这使得问题变得更加复杂。在大量错误复原代码中,很难发现实际的程序逻辑。

现在,假设您正在执行一个复杂的操作,该操作涉及在多个数据库中插入或更新多个行,其中一个操作违反了完整性约束并失败了。如果您管理自己的错误复原,则必须跟踪已经执行的操作,并知道在随后的操作失败的情况下如何取消每个操作。如果工作单元分布在多个方法或组件上,则会更加困难。借助事务来构造应用程序,就可以将所有这些清理工作委托给数据库(即进行 ROLLBACK),并取消自从事务开始所执行的所有操作。

结束语

通过借助事务构造应用程序,我们定义一组正确的应用程序状态转换,并确保应用程序始终处于正确的状态,甚至在系统或组件发生故障之后也是如此。事务使我们能够将很多异常处理和恢复工作委托给 TPM 和 RM,从而简化了我们的代码,并使我们能够空出更多时间来考虑应用程序逻辑。

在此系列的第 2 部分中,我们将探讨这对于 J2EE 应用程序意味着什么 —— J2EE 如何使我们能够将事务语义告知 J2EE 组件(EJB 组件、servlet 以及 JSP 页面);它如何使资源征用对应用程序(甚至对于 bean 管理的事务)完全透明;单个事务如何透明地遵循从一个 EJB 组件到另一个 EJB 组件,或者从一个 servlet 到一个 EJB 组件,甚至跨越多个系统的控制流程。

尽管 J2EE 提供了相当透明的对象事务服务,但是应用程序设计者仍然必须仔细考虑在哪里划分事务,以及如何在应用程序中使用事务资源 —— 不正确的事务划分可能会使应用程序处于不一致的状态,而不正确地使用事务资源可能会造成非常严重的性能问题。在此系列的第 3 部分中,我们将讨论这些问题并提供一些关于如何构造应用程序的建议。

上一页  3 4 5 6 7 8 

Tags:Java 理论 实践

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接