1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6-EJB事务

事务产生的动机 事务产生的各种原因 产生事务的原因有很多种原因,在这里我们通过列举几种常见的几种情况来分析事务的动机。 原子性操作 网络故障与机器故障 多用户共享数据 EJB3中的事务管理策略 什么是事务? 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。 事务的模型 平面式事务模型 平面型事务模型整个事务是一个整体,不可划分为子事务。 实际上平面式事务就是一系列的操作,这些操作象一个独立的操作一样连续执行。当你执行平面式事务时,你的应用程序执行一些操作,其中一些操作是永性操作,有些是则不是。当你结束一个事务时,通常会得到一个二进制的结果:成功或失败。成功的事务被提交,失败的事务则被异常中止。也就是说只有事务以提交形式结束了,资源才能被永久化。 事务的模型 嵌套式事务模型 嵌套式事务允许您在其他的操作单元中嵌入原子操作单元。被嵌入的操作单元可以发生回退,而不影响整个事务发生回退。也可以被嵌套的事务模型看做树形结构,所有的事务都源于根状事务(或顶端事务),根状事务是主事务。在树状结构中,其它的一些事务也被称做子事务,子事务可以是平面式事务模型或嵌套事务模型。 事务在EJB组件中的应用 编程式事务 一般情况下,一个事务的开始,则必将终止于提交或异常结束。而我们关注是在什么时侯开始了事务,什么情况下提交了事务或出现了异常,上述这些被我们称为事务边界。 我们可以通过编程的方式来划分事务边界。但是使用了这种方式来划分事务边界,则要求我们在代码中添加事务处理的逻辑。也就是说,在代码中需要指定了一个事务开始的声明以及指定一个事务提交或异常结束的声明。 事务在EJB组件中的应用 声明式事务 声明式事务允许EJB组件自动参与到事务中去。简而言之,你的EJB组件不会发布事务的开始,事务的提交及异常终止等事务边界,而这一切将会由EJB容器来实现。 事务的类型 本地事务与全局事务 本地事务 在单个?EIS?或数据库的本地并且限制在单个进程内的事务。本地事务不涉及多个数据来源。本地和全局事务都使用?javax.transaction.UserTransaction?接口划分界限,客户端必须使用此接口。本地事务不使用事务管理器,因而处理速度更快。 全局事务 资源管理器管理和协调的事务,可以跨越多个数据库和进程。全局事务由应用服务器管理,使用JTA 。 事务在JDBC中的实现 JDBC事务 JDBC 事务是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手工提交。 在JDBC中,事务操作缺省是自动提交。也就是说,一条对数据库的更新表达式代表一项事务操作,操作成功后,系统将自动调用commit()来提交,否则将调用rollback()来回滚。 在JDBC中,可以通过调用setAutoCommit(false)来禁止自动提交。之后就可以把多个数据库操作的表达式作为一个事务,在操作完成后调 用commit()来进行整体提交,倘若其中一个表达式操作失败,都不会执行到commit(),并且将产生响应的异常;此时就可以在异常捕获时调用 rollback()进行回滚。 JTA(全局式事务解决方案) JTA(Java Transaction API)事务 Java 事务 API(JTA) 及其同门兄弟 Java 事务服务(Java Transaction Service JTS)为 J2EE 平台提供了分布式事务服务。一个分布式的事务涉及一个事务管理器和一个或者多个资源管理器。一个资源管理器是任何类型的持久性的数据存储。事务管理器负责协调所有事务参与者之间的通信。 用?JTA?界定事务,那么就需要有一个实现 javax.sql.XADataSource 、 javax.sql.XAConnection 和 javax.sql.XAResource 接口的 JDBC 驱动程序。一个实现了这些接口的驱动程序将可以参与?JTA?事务。一个 XADataSource 对象就是一个 XAConnection 对象的工厂。 XAConnection s 是参与?JTA?事务的

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档