Mudanças de comportamento da API de Persistência Java 2.1
Se você já usa o recurso jpa-2.0 para seus aplicativos, continue usando o
recurso jpa-2.0 para seus aplicativos existentes para evitar quaisquer problemas de
migração. Para novos aplicativos, é melhor usar o recurso jpa-2.1, que permite aproveitar
os novos recursos que estão disponíveis na especificação do JPA 2.1. Se você deseja mudar seus aplicativos
existentes para usar o recurso jpa-2.1 em vez do recurso jpa-2.0, pode
ser necessário ajustar seu aplicativo no processo de migração.
Diferenças entre o jpa-2.0 e o jpa-2.1
Esteja ciente de algumas diferenças principais entre os recursos jpa-2.0 e
jpa-2.1. Veja o seguinte:
- Diferenças de nome de classe de PersistenceProvider
jpa-2.0- IBM® provedor:
com.ibm.websphere.persistence.PersistenceProviderImpl - Provedor OpenJPA:
org.apache.openjpa.persistence.PersistenceProviderImpl
- IBM® provedor:
- Diferenças de comportamento de armazenamento em cache
jpa-2.0: o armazenamento em cache está desativado por padrão. Se o seu aplicativo precisa aproveitar um cache L2, deve-se ativá-lo explicitamente.- Diferenças de aprimoramento/entrelaçamento
jpa-2.0: o OpenJPA requer que as entidades sejam aprimoradas. Para obter mais informações, consulte Aprimoramento de entidades JPA para JPA 2.0 na documentação do produto.
- Diferenças de uso de origem de dados
O recurso
jpa-2.0usa de forma moderada o non-jta-datasource, portanto, algumas conexões non-jta-datasource são necessárias quando estiver ajustando um aplicativo.
Recursos do JPA 2.1 disponíveis no OpenJPA
O OpenJPA, o provedor JPA 2.0, possui recursos que funcionam de forma semelhante aos novos recursos do JPA
2.1. Isso significa que se você tiver um aplicativo existente que usa o recurso jpa-2.0 e
deseja usar alguns dos recursos do JPA 2.1, não é necessário alternar para o recurso
jpa-2.1. Em vez disso, é possível usar o equivalente do novo recurso que é fornecido pelo
OpenJPA. Alguns dos recursos chave do JPA 2.1 que estão disponíveis no OpenJPA são:
- Geração do Esquema
Com esse recurso, é possível gerar DDL ou interagir diretamente com o banco de dados para definir esquemas de tabela com base na definição de entidade JPA. Para obter mais informações, consulte a seção 9.4 da especificação do JPA 2.1.
Recurso equivalente OpenJPA : Mapeador de Esquema
- Gráficos de entidade
Com esse recurso, é possível especificar a busca ou o processamento de um gráfico de objetos de entidade. Para obter mais informações, consulte a seção 3.7 da especificação do JPA 2.1.
OpenJPA recurso equivalente: FetchPlan e FetchGroup
- Consultas de procedimento armazenado
Com esse recurso, é possível chamar procedimentos que são armazenados em bancos de dados. Para obter mais informações, consulte a seção 3.10.17 da especificação do JPA 2.1.
Recurso equivalente OpenJPA : Chamada de consulta
- Conversão básica de tipo de atributo
Com esse recurso, é possível converter entre uma representação de entidade de atributo e uma representação de banco de dados para atributos de tipo básico. Para obter mais informações, consulte a seção 3.8 da especificação do JPA 2.1.
Recurso equivalente do OpenJPA : Recurso do Externalizador
- Anotações @Index e @ForeignKey
Consulte as seções 11.1.19 e 11.1.23 da especificação do JPA 2.1.
OpenJPA recurso equivalente: OpenJPA's @Index e @ForeignKey.
- Métodos de utilitário de desagrupamento para EntityManager, Cache
Consulte as seções 3.1.1 e 7.10 da especificação do JPA 2.1.
OpenJPA recursos equivalentes: EntityManagerImpl.unwrap() e OpenJPAPersistence.cast().
- Construção de objeto ao mapear resultados a partir do SQL nativo
Consulte a seção 3.10.16.2.2 da especificação do JPA 2.1.
Recurso equivalente do OpenJPA : objeto ResultShape