JPA - Introdução
Qualquer aplicativo corporativo executa operações de banco de dados, armazenando e recuperando grandes quantidades de dados. Apesar de todas as tecnologias disponíveis para gerenciamento de armazenamento, os desenvolvedores de aplicativos normalmente lutam para executar operações de banco de dados com eficiência.
Geralmente, os desenvolvedores Java usam muito código ou usam a estrutura proprietária para interagir com o banco de dados, enquanto usando JPA, a carga de interagir com o banco de dados diminui significativamente. Ele forma uma ponte entre os modelos de objeto (programa Java) e os modelos relacionais (programa de banco de dados).
Incompatibilidades entre modelos relacionais e de objeto
Os objetos relacionais são representados em um formato tabular, enquanto os modelos de objetos são representados em um gráfico interconectado de formato de objeto. Ao armazenar e recuperar um modelo de objeto de um banco de dados relacional, ocorre alguma incompatibilidade devido aos seguintes motivos:
Granularity : O modelo de objeto tem mais granularidade do que o modelo relacional.
Subtypes : Subtipos (significa herança) não são suportados por todos os tipos de bancos de dados relacionais.
Identity : Como o modelo de objeto, o modelo relacional não expõe a identidade ao escrever igualdade.
Associations : Os modelos relacionais não podem determinar vários relacionamentos ao examinar um modelo de domínio de objeto.
Data navigation : A navegação de dados entre objetos em uma rede de objetos é diferente em ambos os modelos.
O que é JPA?
Java Persistence API é uma coleção de classes e métodos para armazenar de forma persistente grandes quantidades de dados em um banco de dados fornecido pela Oracle Corporation.
Onde usar JPA?
Para reduzir a carga de escrever códigos para gerenciamento de objetos relacionais, um programador segue a estrutura 'Provedor JPA', que permite fácil interação com a instância do banco de dados. Aqui, a estrutura necessária é assumida pela JPA.
História JPA
Versões anteriores de EJB, camada de persistência definida combinada com camada de lógica de negócios usando a interface javax.ejb.EntityBean.
Durante a introdução do EJB 3.0, a camada de persistência foi separada e especificada como JPA 1.0 (Java Persistence API). As especificações desta API foram lançadas junto com as especificações do JAVA EE5 em 11 de maio de 2006 usando JSR 220.
O JPA 2.0 foi lançado com as especificações do JAVA EE6 em 10 de dezembro de 2009 como parte do Java Community Process JSR 317.
JPA 2.1 foi lançado com a especificação de JAVA EE7 em 22 de abril de 2013 usando JSR 338.
Provedores JPA
JPA é uma API de software livre, portanto, vários fornecedores corporativos, como Oracle, Redhat, Eclipse, etc. fornecem novos produtos adicionando o tipo de persistência JPA a eles. Alguns desses produtos incluem:
Hibernate, Eclipselink, Toplink, Spring Data JPA, etc.