为 Java SE 环境开发 JPA 2.x 应用程序
准备持久性应用程序,以便在 Java™ SE 环境中应用程序服务器容器外部进行测试。
关于此任务
对于此任务,必须在类路径中指定 com.ibm.ws.jpa-2.1.thinclient_9.0.jar 独立 Java 归档 (JAR) 文件以针对 JPA 2.1 接口进行编译。要针对 JPA 2.0 接口进行编译,请在类路径中指定 com.ibm.ws.jpa-2.0.thinclient_9.0.jar。可从安装映像中获取此独立 JAR 文件。在服务器安装映像中,这些文件的位置是 ${app_server_root}/runtimes/ 目录。
要点: Java Persistence API (JPA) 应用程序需要的配置方法有别于使用容器管理的持久性 (CMP) 或 Bean 管理的持久性 (BMP) 的应用程序的配置方法。它们并不遵循与实现 CMP 或 BMP 的应用程序相关联的典型部署方法。在 JPA 应用程序中,必须定义持久性单元并在 persistence.xml 文件中配置适当的属性以确保这些应用程序可以在
Java SE 环境中运行。
在 Java SE 环境中运行 JPA 应用程序需要注意一些事项:
- 资源插入不可用。您必须专门或以编程方式配置这些服务。
- EntityManagerFactory 和 EntityManager 的生命周期由应用程序进行管理。应用程序以编程方式控制这些构造的创建、操作和删除。
过程
示例
以下是用于 Java SE 环境的样本 persistence.xml 文件:
对于 EclipseLink:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="TheWildZooPU" transaction-type="RESOURCE_LOCAL">
<!-- additional Mapping file, in addition to orm.xml>
<mapping-file>META-INF/JPAorm.xml</mapping-file>
<class>com.company.bean.jpa.PersistebleObjectImpl</class>
<class>com.company.bean.jpa.Animal</class>
<class>com.company.bean.jpa.Dog</class>
<class>com.company.bean.jpa.Cat</class>
<properties>
<property name="javax.persistence.jdbc.driver"
value="org.apache.derby.jdbc.EmbeddedDriver"/>
<property name="javax.persistence.jdbc.url"
value="jdbc:derby:target/database/jpa-test-database;create=true" />
<property name="javax.persistence.schema-generation.database.action"
value="create" />
<property name="javax.persistence.jdbc.user"
value="user" />
<property name="javax.persistence.jdbc.password"
value="password"/>
</properties>
</persistence-unit>
</persistence>
对于 OpenJPA:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="TheWildZooPU" transaction-type="RESOURCE_LOCAL">
<!-- additional Mapping file, in addition to orm.xml>
<mapping-file>META-INF/JPAorm.xml</mapping-file>
<class>com.company.bean.jpa.PersistebleObjectImpl</class>
<class>com.company.bean.jpa.Animal</class>
<class>com.company.bean.jpa.Dog</class>
<class>com.company.bean.jpa.Cat</class>
<properties>
<property name="openjpa.ConnectionDriverName"
value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="openjpa.ConnectionURL"
value="jdbc:derby:target/database/jpa-test-database;create=true" />
<property name="openjpa.Log"
value="DefaultLevel=INFO,SQL=TRACE,File=./dist/jpaEnhancerLog.log,Runtime=INFO ,Tool=INFO" />
<property name="openjpa.ConnectionFactoryProperties"
value="PrettyPrint=true,PrettyPrintLineLength=72" />
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(ForeignKeys=true)" />
<property name="openjpa.ConnectionUserName"
value="user" />
<property name="openjpa.ConnectionPassword"
value="password"/>
</properties>
</persistence-unit>
</persistence>