使用 WSJPA 访问意向

Java™ 持久性 API (JPA) 访问意向指定从数据源中读取数据时使用的隔离级别和锁定级别。访问意向控制 Java 数据库连接 (JDBC) 隔离级别以及检索数据时是需要读锁定、更新锁定还是互斥锁定。

关于此任务

对于应用程序服务器上的 JPA 持久性提供程序,应用程序可以根据 TaskName 来指定隔离和 ReadLockMode。TaskName 提供了比应用这些特征更好的控制。应用程序为持久性单元中定义的每个 TaskName 定义一组实体类型及相应的访问意向。
注: JPA 访问意向是 OpenJPA 的 WebSphere (WSJPA) 扩展的 JPA。
限制:
  • 访问意向可用于 Java EE 服务器环境中的应用程序
  • 访问意向适用于非查询实体管理器接口方法。查询将使用查询提示接口来设置其隔离和读锁定值。
  • 访问意向仅可用于 DB2® 数据库。
  • 仅当使用悲观锁管理器时,访问意向才有效。请在持久性单元属性列表中添加以下内容。<property name="openjpa.LockManager" value="pessimistic"/>
表 1. 访问意向的属性和描述. 下表对 Enterprise JavaBeans (EJB) 2.x 实体 bean 访问意向与 JPA 访问意向属性进行比较:
WebSphere® EJB 2.x 实体 bean 访问意向 JPA 访问意向 描述
乐观 隔离:已落实的读 读取数据,但不挂起锁定。执行更新时,使用版本标识来确保数据完整性。其他事务可以读取和更新数据。
锁管理器:乐观
查询提示:ReadLockMode:READ
悲观读 隔离:可重复读 使用共享锁定来读取数据。其他尝试更新数据的事务将被阻塞。
锁管理器:乐观
查询提示:ReadLockMode:READ
悲观更新 隔离:可重复读 使用更新或互斥锁定来检索数据。其他写操作将被阻塞到落实为止。当存在多个写程序时,此访问意向可用于将数据更新访问序列化。
锁管理器:悲观
查询提示:ReadLockMode:WRITE
悲观互斥 隔离:可序列化 使用更新或互斥锁定来检索数据。其他写操作将被阻塞到落实为止。当存在多个写程序时,此访问意向可用于将数据更新访问序列化。
锁管理器:悲观
查询提示:ReadLockMode:WRITE
TaskName 由下列其中一项对事务上下文设置:
  • 当一个事务开始使用 WebSphere 本地事务(EJB 未指定的事务)、容器管理的事务 (CMT) 中的 JTA 全局事务或者 bean 管理的事务 (BMT) 中用户启动的全局事务时,将在 EJB 容器中自动设置 TaskName。
  • 在应用程序中,可以使用为 JPA 提供的 TaskNameAccessor API 来手动设置 TaskName。

使用任务名可支持对请求作用域指定访问意向,而不必在具有跨所有实体的应用程序作用域的 persistence.xml 文件中指定此意向。通常,查询包含在用于许多不同事务上下文的方法或组件中。其中的某些上下文可能需要可重复读和更新锁定意向,而其他上下文却并非如此。

可以对下列各项指定隔离级别和读锁定:
  • persistence.xml 文件中对应用程序作用域进行指定。这些隔离级别和读锁定类型是 persistence.xml 文件中指定的属性。它们将应用于持久性单元中定义的所有实体。
  • 任务名称中的事务作用域。事务作用域提示将覆盖应用程序作用域值。
  • 通过查询提示对查询实例进行指定。查询提示可用于覆盖特定查询实例的隔离和 ReadLockMode。查询提示将覆盖对应用程序或事务作用域指定的隔离级别和读锁定。

过程

  1. 使用 TaskNameAccessor API 设置 TaskName 此项任务说明了如何使用 TaskNameAccessor API 在运行时设置 JPA TaskName。
  2. 在 JPA 持久性单元中指定 TaskName 此项任务说明了如何在 JPA 持久性单元中指定 TaskName。

下一步做什么

有关访问意向的更多信息,请参阅“访问意向服务”主题。

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_accessintentjpa
文件名:tejb_accessintentjpa.html