Por que eu devo ler este artigo:

Este artigo apresenta a evolução da Java Persistence API (JPA), solução de Mapeamento Objeto-Relacional padrão da plataforma Java EE. Por meio de algumas demonstrações, vamos analisar as novidades da especificação da JPA versão 2.1, que traz novas funcionalidades que aumentam o nível de flexibilidade no desenvolvimento de soluções e facilitam o uso de recursos oferecidos pelos Sistemas Gerenciadores de Banco de Dados.

A abordagem feita no artigo é útil para familiarizar o leitor com a evolução da especificação JPA, permitindo o conhecimento rápido e a utilização das novas funcionalidades incorporadas que tornam mais produtivo o desenvolvimento em Java envolvendo persistência de dados.

Grande parte das aplicações desenvolvidas, sejam estas simples ou complexas, compartilham um denominador comum, a informação. A informação criada e/ou manipulada pelas aplicações na maioria das vezes precisa ser armazenada para utilização no futuro. Alguns exemplos destas informações são: um cadastro preenchido em uma loja virtual, que é reaproveitado em todas as compras realizadas pelo cliente; ou os registros de transações bancárias, que são a base para a geração e conferência do extrato contendo a movimentação efetuada em uma conta.

Um meio comum para o armazenamento de informações são os SGBDs (Sistemas Gerenciadores de Banco de Dados). Os SGBDs armazenam informações em um modelo relacional que se baseia em conceitos como: tabelas, colunas, linhas, chaves primárias (coluna(s) com valor(es) que identificam unicamente uma linha em uma tabela) e chaves estrangeiras (coluna(s) com valor(es) que referenciam linhas da mesma ou de outras tabelas).

No entanto, as aplicações desenvolvidas em Java, diferentemente dos SGBDs, utilizam o modelo orientado a objetos para representar as informações. Este modelo aplica conceitos como classes, objetos, atributos, associações entre um ou mais objetos, métodos e herança.

Pelos conceitos descritos anteriormente podemos notar que o modelo relacional e o modelo orientado a objetos são incompatíveis entre si. Deste modo, para que exista interação entre eles é necessário um mecanismo intermediador, o ORM (Object-Relational Mapping). Este mecanismo provê a conversão das informações existentes em um modelo de dados relacional para o orientado a objetos e vice–versa. Esta conversão é possível através do mapeamento ORM, que descreve a correspondência entres esses dois modelos.

A JPA (Java Persistence API) é a solução ORM padrão para as plataformas Java SE e Java EE. Sua criação e consequentes atualizações efetuadas foram e são estabelecidas seguindo o mesmo procedimento de evolução das tecnologias da plataforma Java, através de especificações. Uma especificação é elaborada por meio de uma JSR (Java Specification Request), que consiste em uma proposta formal e estabelece quais e como os recursos serão oferecidos, além de determinar o comportamento esperado destes nas implementações. Com a aprovação da JSR por um comitê executivo, a nova versão da especificação é liberada.

Em consequência da aprovação da JSR 338, a versão 2.1 da especificação JPA foi liberada em Maio de 2013. Esta nova versão da API é o tema central deste artigo, e vamos abordar este assunto com uma breve descrição da motivação para criação da JPA, seguindo com um resumo das atualizações realizadas na versão 2.0, e através de um conteúdo mais amplo, a apresentação e demonstração das novidades incorporadas na especificação atual, que corresponde à versão 2.1.

A evolução da JPA

A motivação para criação da JPA surgiu da necessidade de simplificar o modelo de persistência disponível na plataforma EJB 2.x, o CMP. Os recursos oferecidos pelo CMP eram altamente acoplados e dependentes do ambiente oferecido pelo container. Esta dependência implicava no desenvolvimento de uma quantidade de código considerável que era requerida para o funcionamento da persistência, a saber:

· Criação das interfaces de componentes que definem os métodos de negócio para manipulação das informações persistidas. Estas interfaces possibilitam o acesso remoto, estendendo a interface javax.ejb.EJBObject, e o acesso local, estendendo a interface javax.ejb.EJBLocalObject;

· Criação das interfaces home, que devem estender as interfaces javax.ejb.EJBHome para acesso remoto e javax.ejb.EJBLocalHome para acesso local. Estas interfaces são utilizadas pelo container como fábrica na criação dos componentes que irão possibilitar o acesso às informações persistidas;

· Implementação abstrata da in ...

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora