Enterprise BeansEdit
A especificação EJB 3.0 (ela própria parte da plataforma Java EE 5) incluiu uma definição do Java Persistence API. Entretanto, os usuários finais não precisam de um container EJB ou de um servidor de aplicações Java EE para executar aplicações que utilizam esta API de persistência. Versões futuras da API de persistência Java serão definidas em um JSR e especificação separados em vez de no EJB JSR/specification.
A API de persistência Java substitui a solução de persistência do EJB 2.0 CMP (Container Managed Persistence).
Java Data Objects APIEdit
A API Java Persistence foi desenvolvida em parte para unificar a API Java Data Objects, e a API EJB 2.0 Container Managed Persistence (CMP). A partir de 2009 a maioria dos produtos que suportam cada uma dessas APIs suporta o Java Persistence API.
O Java Persistence API especifica persistência apenas para sistemas de gerenciamento de bancos de dados relacionais. Ou seja, o JPA concentra-se no mapeamento objeto-relacional (ORM) (note que existem provedores JPA que suportam outros modelos de banco de dados além do banco de dados relacional, mas isso está fora do escopo para o qual o JPA foi projetado). Consulte a seção 1 de especificações do JPA 2 para esclarecimento do papel do JPA, que diz muito claramente “O objetivo técnico deste trabalho é fornecer um recurso de mapeamento objeto/relacional para o desenvolvedor da aplicação Java usando um modelo de domínio Java para gerenciar um banco de dados relacional.”
A especificação Java Data Objects suporta ORM, bem como persistência para outros tipos de modelos de banco de dados, por exemplo, bancos de dados de arquivos planos e bancos de dados NoSQL, incluindo bancos de dados de documentos, bancos de dados gráficos, bem como literalmente qualquer outra datastore concebível.
Objeto de Dados de Serviço APIEdit
Os designers da API de Persistência Java tinham como objetivo prover persistência relacional, com muitas das áreas chave retiradas de ferramentas de mapeamento objeto-relacional, tais como Hibernate e TopLink. O Java Persistence API melhorou e substituiu o EJB 2.0, evidenciado pela sua inclusão no EJB 3.0. A API Service Data Objects (SDO) (JSR 235) tem um objetivo muito diferente do Java Persistence API e é considerada complementar. A SDO API é projetada para arquiteturas orientadas a serviços, múltiplos formatos de dados em vez de apenas dados relacionais, e múltiplas linguagens de programação. O Processo da Comunidade Java gerencia a versão Java da API SDO; a versão C++ da API SDO é gerenciada via OASIS.
HibernateEdit
Hibernate fornece um framework de mapeamento objeto-relacional de código aberto para Java. As versões 3.2 e posteriores fornecem uma implementação para o Java Persistence API. Gavin King fundou o projeto Hibernate. Ele representou o JBoss no JSR 220, o grupo de peritos do JCP encarregado de desenvolver o JPA. Isto levou a uma contínua controvérsia e especulação em torno da relação entre o JPA e Hibernate. A Sun Microsystems declarou que as idéias vieram de vários frameworks, incluindo Hibernate e Java Data Objects.
Spring Data JPAEdit
Uma implementação da abstração do repositório que é um bloco chave de construção do Design orientado por domínio baseado no framework de aplicação Java Spring. Transparentemente suporta todas as implementações JPA disponíveis e suporta operações CRUD, assim como a execução conveniente de consultas a bancos de dados.