使持久性提供程序与数据源相关联
Java™ Persistence API (JPA) 应用程序指定由持久性提供程序用于访问数据库的底层数据源。
关于此任务
过程
- 在 persistence.xml 文件中显式地指定 Java 命名和目录接口 (JNDI) 名称,应用程序将直接引用该数据源。 如果要切换到另一个数据源,那么必须更新 persistence.xml 文件。
JPA 提供了两种事务模式来访问数据源:
- Java Transaction API (JTA) 资源模式依赖于全局事务。JTA 资源模式通常在 Enterprise JavaBeans (EJB) 会话面的作用域内使用。这支持会话 Bean 在 JPA 处理持久性映射时控制事务和安全上下文。在这种情况下,应用程序不使用 EntityTransaction 接口,而是依赖于全局事务在被访问时随全局事务一起列出的 EntityManager。
- 在缺乏全局事务的情况下处理单个资源时,将使用非 JTA 资源模式。通常在 Web 应用程序或应用程序客户机的范围中使用非 JTA 资源模式。应用程序通过 EntityTransaction 接口来控制与数据源之间的事务。在应用程序服务器中,如果使用 <non-jta-data-source> 元素,那么要求对非事务数据源进行特殊配置。对应用程序服务器配置的数据源将不能用作 <non-jta-data-source>,这是因为由应用程序服务器配置的所有数据源都将自动随当前事务上下文列出。要防止这样的自动列出,请添加额外的数据源定制属性 nonTransactionalDataSource=true:
- 选择资源 > JDBC > 数据源。
- 选择要配置的数据源的名称。
- 在其他属性标题下,选择 WebSphere 应用程序服务器 数据源属性。
- 选择非事务数据源。
- 单击确定。
避免故障: JPA 规范假定您使用并不会在数据库中长时间挂起锁定的隔离级别(例如 READ_COMMITTED)来获取连接。这可能与 WebSphere® Application Server 缺省隔离级别(对于大多数数据库,此隔离级别为 REPEATABLE_READ)不匹配。您可以通过阅读“设置隔离级别的要求”主题来了解用于您的数据库的级别。
如果数据库的缺省隔离级别不是 READ_COMMITTED,那么您可以通过添加另一个数据源定制属性 webSphereDefaultIsolationLevel 来更改缺省隔离级别。如果隔离级别设置为将会长时间挂起读锁定的值,请将 JPA 提供程序配置为使用悲观锁定来代替缺省的乐观锁定。表 1. 隔离级别值. 此表显示有效的隔离级别值。 值 隔离级别 1 READ_UNCOMMITTED 2 READ_COMMITTED(JPA 缺省值) 4 REPEATABLE_READ(WebSphere Application Server 缺省值) 8 SERIALIZABLE 对于 EclipseLink,在 persistence.xml 文件中使用以下属性:<property name=”eclipselink.pessimistic-lock” value=”Lock”/>
对于 OpenJPA,在 persistence.xml 文件中使用以下属性:gotcha<property name="openjpa.Optimistic" value="false"/> <property name="openjpa.LockManager" value=pessimistic"/>
JPA 规范要求持久性单元的 <jta-data-source> 和 <non-jta-data-source> 元素中定义的数据源在 JNDI 名称空间中注册。
例如,persistence.xml 文件应该包含类似如下的条目:<jta-data-source>jdbc/DataSourceJNDI</jta-data-source>
- WebSphere Application Server 解决方案的 JPA 扩展了 JNDI 数据源实现,以允许您在组件名称空间中引用数据源。 在 EJB 或 Web 模块部署描述符文件中,这是 <resource-ref> 元素。可以给该数据源加上前缀 comp/env/,以便应用程序通过使用局部 JNDI 名称来间接引用该数据源。在此关联中,应用程序不需要更新,您应该更改 <resource-ref> 以使用另一个数据源。请参阅以下示例:
<jta-data-source>java:comp/env/jdbc/DataSourceJNDI</jta-data-source>
下一步做什么
有关如何配置数据源的信息,请参阅“创建并配置数据源”主题。
相关概念:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_defjpadatasource
文件名:tejb_defjpadatasource.html