Associando provedores de persistência e origens de dados
Os aplicativos Java™ Persistence API (JPA) especificam a origem de dados subjacente usada pelo provedor de persistência para acessar o banco de dados.
Sobre Esta Tarefa
Procedimento
- Especifique explicitamente o nome Java Naming and Directory Interface (JNDI) no arquivo persistence.xml e o aplicativo
que referencia diretamente a origem de dados. Alternar
para outra origem de dados requer uma atualização para o arquivo
persistence.xml.
JPA possui dois padrões transacionais para acessar uma origem de dados:
- O padrão de recursos JTA (Java Transaction API) depende de transações globais. O padrão de recursos JTA normalmente é utilizado no escopo de uma fachada de sessão EJB (Enterprise JavaBeans). Isso suporta o bean de sessão para controlar os contextos de transação e de segurança enquanto o JPA manipula os mapeamentos de persistência. Neste caso, o aplicativo não utiliza a interface EntityTransaction, mas conta com EntityManager inscrita com a transação global quando ela é acessada.
- O padrão de recurso não JTA é usado quando lidar com um recurso único
na ausência de transações globais. O padrão de recurso não JTA geralmente é utilizado dentro do escopo de um aplicativo da Web ou um aplicativo cliente. O aplicativo controla a transação com a origem de dados com a interface EntityTransaction.No servidor de aplicativos, o uso do elemento <non-jta-data-source> requer uma configuração especial para uma origem de dados não transacional. As origens de dados que estiverem configuradas para o servidor de aplicativos não funcionam como <non-jta-data-source>, porque todas as origens de dados que estiverem configuradas pelo servidor de aplicativos são listadas automaticamente com o contexto de transação atual. Para evitar este cadastramento automático, inclua uma propriedade customizada adicional nonTransactionalDataSource=true da origem de dados:
- Selecione Recursos > JDBC > Origens de Dados
- Selecione o nome da origem de dados que você deseja configurar.
- Selecione Propriedades de Origem de Dados do WebSphere Application Server no título Propriedades Adicionais.
- Selecione Origem de dados não transacional.
- Clique em OK.
Evitar Problemas: A especificação JPA assume que as conexões são obtidas com o nível de isolamento que não mantém bloqueios a longo prazo no banco de dados, como READ_COMMITTED. Isso pode não corresponder ao nível de isolamento padrão do WebSphere Application Server, que é REPEATABLE_READ para a maioria dos bancos de dados. É possível localizar o nível que é usado para seu banco de dados ao ler o tópico Requisitos para Configurar o Nível de Isolamento.
Se o padrão para seu banco de dados não for READ_COMMITTED, é possível alterar o padrão incluindo uma propriedade customizada de origem de dados adicional webSphereDefaultIsolationLevel.gotchaSe o nível de isolamento é definido para um valor que mantém bloqueio de leitura por longo prazo, configure o provedor JPA para usar Bloqueio Pessimista em vez do Bloqueio Otimista padrão. Para o provedor JPA incluído com o WebSphere Application Server, poderá fazer isso ao incluir as seguintes propriedades ao arquivo persistence.xml:Tabela 1. Valores do Nível de Isolamento. Esta tabela mostra valores do nível de isolamento válidos. Valor Nível de Isolamento 1 READ_UNCOMMITTED 2 READ_COMMITTED (padrão JPA) 4 REPEATABLE_READ (WebSphere Application Server padrão) 8 SERIALIZABLE <property name="openjpa.Optimistic" value="false"/> <property name="openjpa.LockManager" value=pessimistic"/>
A especificação JPA obriga que as origens de dados estejam definidas nos elementos <jta-data-source> e <non-jta-data-source> de um registro de unidade de persistência no espaço de nomes JNDI.
Por exemplo, o arquivo persistence.xml deve conter uma entrada, como a seguinte:<jta-data-source>jdbc/DataSourceJNDI</jta-data-source>
- A solução do JPA para WebSphere Application Server estende a implementação de origem de dados JNDI
para permitir que você referencie origens de dados no namespace do componente. No arquivo descritor de implementação do EJB ou módulo
da Web, esse é o elemento <resource-ref>. É possível prefixar a origem de dados com java:comp/env/, portanto, o aplicativo faz referência indiretamente à origem de dados usando o nome JNDI local. Nessa associação, o aplicativo não requer atualizações; altere<resource-ref> para usar outra origem de dados.
Consulte o exemplo a seguir:
<jta-data-source>java:comp/env/jdbc/DataSourceJNDI</jta-data-source>
- É possível declarar propriedades openjpa.Connection* na unidade de persistência da seguinte forma:
<property name="openjpa.ConnectionDriverName" value="org.apache.derby.jdbc.EmbeddedDriver" /> <property name="openjpa.ConnectionURL" value="jdbc:derby:target/database/jpa-test-database;create=true"/>
OU
É possível usar propriedades JPA padrão alternativas equivalentes às propriedades OpenJPA, como:Tabela 2. Equivalentes da Propriedade JPA 2.0 Padrão. Propriedades JPA 2.0 padrão e OpenJPA equivalentes JPA 2.0 padrão OpenJPA Equivalente javax.persistence.jdbc.driver openjpa.ConnectionDriverName javax.persistence.jdbc.url openjpa.ConnectionURL
O que Fazer Depois
Para obter informações sobre como configurar as origens de dados, consulte o tópico sobre como criar e configurar uma origem de dados.
Para obter informações sobre origens de dados e JPA, consulte a sessão na persistência no Guia do Usuário Apache OpenJPA.
Conceitos relacionados:
Tarefas relacionadas:
Referências relacionadas:
Informações relacionadas:


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