JPA事务总结.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JPA事务总结

JPA事务总结 原文摘自:JPA数据库持久层开发实践 作者:冯曼菲 事务管理是JPA中另一项重要的内容,了解了JPA中的事务管理,能够进一步掌握JPA的使用。事务管理是对一系列操作的管理,它最终只有两个结 果,要么成功,要么失败。一旦失败,所有的操作将回滚到初始状态。一旦成功,才最终提交,最终持久化。事务管理对银行系统最为典型。例如一个人去银行取 款,他取款的钱此时大于银行账户中的钱,此时交易失败,所以取款不成功,事务回滚到操作前的状态。 在JPA中,对于实体的“CRUD”基本操作,其中 涉及事务的是“C”、“U”和“D”,即“新建”、“更新”和“删除”,因为这些操作都会影响数据库中的数据变化,所以必须使用事务保证其一致性;对于 “R”查询,只是查询数据,没有对数据产生变化,所以并不需要控制事务。 所以,一说到事务,读者首先应确定所使用的操作是否 需要关联事务,先要界定事务所有效使用的范围。 11.4.1 事务与EntityManager EntityManager对象的事务管理方式有两 种,分别为JTA和RESOURCE_LOCAL,即Java Transaction API方法和本地的事务管理。 JPA中的事务类 型通过persistence.xml文件中的“transaction-type”元素配置。例如,配置事务为JTA方式的代码如下所示。 persistence persistence-unit name=demo transaction-type=JTA //其他配置省略 /persistence-unit /persistence 如果使用 RESOURCE_LOCAL管理事务,则配置代码如下所示。 persistence persistence-unit name=demo transaction-type=RESOURCE_LOCAL //其他配置省略 /persistence-unit /persistence 除了在配置文件时指明了 事务的类型,不同的事务类型,不同类型的EntityManager对象,在代码中控制事务也是不同的。表11-2为不同的运行环境、不同的 EntityManager对象所支持的事务类型。 运行环境 J2EE环 境 J2SE环 境 类型 EJB容 器 Web容 器 应用托管的EntityManager JTA,RESOURCE_LOCAL JTA,RESOURCE_LOCAL RESOURCE_LOCAL 容器托管的EntityManager JTA 不支持 不支持 表11-2 事务类型与EntityManager 运行环境 类型 J2EE环 境 J2SE环 境 EJB容 器 Web容 器 应用托管的EntityManager JTA,RESOURCE_LOCAL JTA,RESOURCE_LOCAL RESOURCE_LOCAL 容器托管的EntityManager JTA 不支持 不支持 从表11-2中可以看 出,对于不同的EntityManager类型与所运行的环境,所支持的事务类型是不一样的。 其中两种情况下最为简单,一种是容器托管的 EntityManager只能运行在EJB容器中,只能采用JTA的方式管理事务;另一种是J2SE环境下,只能使用应用托管的 EntityManager并且只能采用RESOURCE_LOCAL的方式管理事务。本节的事务只针对这两种情况讲述,而对于应用托管的 EntityManager在EJB容器和Web容器中由于都可以选择不同的事务管理方式,情况比较复杂,所以将在第11.5节中详细讲述。 11.4.2 JTA管理事务 JTA事务(Java Transaction API)是J2EE规范中有关事务的标准。它是容器级别的事务,只能运行在J2EE服务器中。它的最大优势是可以支持分布式的事务,如果系统采用的是分布 式的数据库,那么只能选择JTA管理EntityManager事务。 使用JTA管理EntityManager事务时, 需要注意以下几个问题。 — JTA事务只能运行在J2EE的环境中,即EJB容器中和Web容器中;而在J2SE环境中只能使用RESOURCE_LOCAL管理事务。 — 容器托管的EntityManager对象只能采用JTA的事务,而不能采用RESOURCE_LOCAL事务。 在第11.3节中,已经简单了解了一些JTA事务与 EntityManager之间的关系,但当Bean的方法中又调用了另一个Bean的方法时,那么此时事务传播(Propagation)是如何进行 的?下面就深入了解事务的传播与持久化上下文的关系。 有这样一

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档