Desenvolvendo Aplicativos JPA 2.x para um Ambiente Java SE
Preparar aplicativos de persistência para testar fora do contêiner do servidor de aplicativos em um ambiente Java™ SE.
Sobre Esta Tarefa
Atenção: Quando você usar estas ferramentas de comando JPA,
execute-as a partir do diretório profile_root/bin,
em vez de a partir do diretório app_server_root/bin
para certificar-se de que possui a versão mais recente dos comandos para
seu nível de liberação.
Para essa tarefa, você deve especificar o arquivo Java archive (JAR) independente com.ibm.ws.jpa-2.1.thinclient_9.0.jar no caminho da classe para compilação com as interfaces JPA 2.1. Para compilar com as interfaces JPA 2.0, especifique o com.ibm.ws.jpa-2.0.thinclient_9.0.jar no caminho da classe. Esse arquivo JAR independente está disponível a partir das imagens de instalação. O local desses arquivos na imagem de instalação do servidor está no diretório ${app_server_root}/runtimes.
Importante: Os aplicativos Java Persistence API (JPA) exigem técnicas de configuração diferentes dos aplicativos que utilizam persistência gerenciada por contêiner (CMP) ou persistência
gerenciada por bean (BMP). Eles não seguem as técnicas típicas de implementação que estão associadas a aplicativos que implementam CMP ou BMP. Em aplicativos JPA, você deve definir uma unidade de persistência e configurar as propriedades adequadas no arquivo persistence.xml para garantir que os aplicativos possam executar em um ambiente Java SE.
Há algumas considerações para executar aplicativos JPA em um ambiente Java SE:
- A injeção de recursos não está disponível. Você deve configurar esses serviços especificamente ou programaticamente.
- O ciclo de vida de EntityManagerFactory e de EntityManager são gerenciados pelo aplicativo. Os aplicativos controlam a criação, a manipulação e a exclusão dessas construções programaticamente.
Procedimento
Exemplo
A seguir, um arquivo persistence.xml de amostra para o ambiente Java SE:
Para 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>
Para 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>