Diferença entre JPA e Hibernate

Anonim

JPA versus Hibernate

Quase todos os aplicativos corporativos são necessários para acessar bancos de dados relacionais regularmente. Mas um problema enfrentado com tecnologias anteriores (como JDBC) foi a incompatibilidade de impedância (diferença entre tecnologias orientadas a objetos e relacionais). Uma solução para este problema foi introduzida através da introdução de uma camada abstrata chamada camada Persistence, que encapsula o acesso ao banco de dados a partir da lógica comercial. O JPA (Java Persistence API) é uma estrutura dedicada ao gerenciamento de dados relacionais (usando a camada de persistência) em aplicativos Java. Existem muitas implementações de fornecedores de JPA usadas na comunidade de desenvolvedores Java. O Hibernate é a implementação mais popular da JPA (DataNucleus, EclipseLink e OpenJPA são alguns outros). A versão JPA mais nova (JPA 2. 0) é totalmente suportada pelo Hibernate 3. 5, que foi lançado em março de 2010.

O que é JPA?

O JPA é uma estrutura para gerenciar dados relacionais para Java. Ele pode ser usado com aplicativos que utilizem JSE (Java Platform, Standard Edition) ou JEE (Java Platform, Enterprise Edition). Sua versão atual é JPA 2. 0, que foi lançado em 10 de dezembro de 2009. A JPA substituiu EJB 2. 0 e EJB 1. 1 beans de entidade (que foram fortemente criticados por serem pesados ​​pela comunidade de desenvolvedores Java). Embora o feixe de entidades (no EJB) tenha fornecido objetos de persistência, muitos desenvolvedores foram utilizados para utilizar objetos relativamente leves oferecidos por DAO (Data Access Objects) e outros frameworks semelhantes. Como resultado, o JPA foi introduzido e capturou muitos dos recursos legais dos frameworks mencionados acima.

A persistência, conforme descrito na JPA, abrange a API (definida na perseverança javax), JPQL (Plataforma Java, Enterprise Edition) e metadados necessários para objetos relacionais. O estado de uma entidade de persistência normalmente é persistido em uma tabela. As instâncias de uma entidade correspondem a linhas da tabela da base de dados relacional. Metadados são usados ​​para expressar as relações entre entidades. Anotações ou arquivos de descritor XML separados (implantados com o aplicativo) são usados ​​para especificar metadados em classes de entidades. O JPQL, que é semelhante às consultas SQL, é usado para consultar entidades armazenadas.

O que é Hibernate?

O Hibernate é uma estrutura que pode ser usada para o mapeamento objeto-relacional destinado a linguagem de programação Java. Mais especificamente, é uma biblioteca ORM (mapeamento objeto-relacional) que pode ser usada para mapear modelo objeto-relacional para o modelo relacional convencional. Em termos simples, cria um mapeamento entre classes Java e tabelas em bancos de dados relacionais, também entre tipos de dados Java para SQL. O Hibernate também pode ser usado para consulta e recuperação de dados ao gerar chamadas SQL.Portanto, o programador é aliviado do manuseio manual de conjuntos de resultados e objetos de conversão. O Hibernate é lançado como uma estrutura livre e de código aberto distribuída sob licença GNU. Uma implementação para JPA API é fornecida no Hibernate 3. 2 e versões posteriores. Gavin King é o fundador da Hibernate.

Qual a diferença entre JPA e Hibernate?

O JPA é uma estrutura para gerenciar dados relacionais em aplicativos Java, enquanto o Hibernate é uma implementação específica do JPA (então, idealmente, JPA e Hibernate não podem ser comparados diretamente). Em outras palavras, o Hibernate é uma das estruturas mais populares que implementa a JPA. O Hibernate implementa o JPA através das bibliotecas de Anotações do Hibernate e EntityManager que são implementadas nas bibliotecas do Hibernate Core. Tanto EntityManager quanto Annotations seguem o ciclo de vida do Hibernate. A versão JPA mais nova (JPA 2. 0) é totalmente suportada pelo Hibernate 3. 5. A JPA tem o benefício de ter uma interface padronizada, de modo que a comunidade de desenvolvedores seja mais familiarizada com ela do que a Hibernate. Por outro lado, as APIs da Hibernate nativas podem ser consideradas mais poderosas porque suas características são um superconjunto do da JPA.