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 ...
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
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.