De que se trata o artigo:

Neste artigo veremos como construir uma aplicação integrando Spring e JPA. No decorrer do mesmo, será implementado um exemplo demonstrando o funcionamento das duas tecnologias e como elas podem trazer vantagens para a camada de persistência da sua aplicação.


Para que serve:

Simplificar a camada de persistência e obter desacoplamento do código utilizando recursos do Spring como Injeção de Dependência e controle de transação, possibilitando dessa forma facilidade de manutenção e um código mais limpo.


Em que situação o tema é útil:

Este tema é útil para a criação de aplicações onde se deseja desenvolver a camada de persistência com baixo acoplamento entre dependências, segurança e controle transacional.

Integrando Spring 3.0 e JPA 2.0:

No artigo é mostrado como fazer a integração do JPA com o Spring. Desta maneira, o EntityManager é gerenciado pelo Spring e obtido através de Injeção de Dependência. O Spring também se responsabilizará pelo controle de transações e pelo código declarativo, reduzindo códigos repetitivos existentes na camada de persistência e simplificando o acesso aos dados.

Em uma aplicação, na maioria das vezes, é necessário cumprir um importante requisito que é o de persistir dados de forma consistente e coerente. Porém, geralmente esta é uma tarefa trabalhosa, que exige tempo e cuidado, pois se o acesso a dados for tratado de forma falha pode haver resultados bastante desagradáveis. A implementação de uma camada de persistência vem muitas vezes com uma série de tarefas repetitivas, como por exemplo, obter conexões, gerenciar transações, manipular dados etc. Dependendo do tipo de aplicação, organização e estrutura da camada de persistência, ela pode se transformar em algo complexo e de difícil manutenção. Daí a necessidade de se utilizar frameworks e padrões que auxiliem o desenvolvedor a trabalhar com esta camada, proporcionando soluções que ajudem a simplificar e a obter melhores resultados.

O Spring é um framework poderoso que se baseia principalmente em Injeção de Dependência (DI) e Inversão de Controle (IoC), ele é composto por cerca de 20 módulos que são agrupados em Core Container, Acesso a Dados/Integração, Web, AOP, Instrumentação e Teste, conforme mostrado na Figura 1, fornecendo assim uma plataforma Java bastante completa com inúmeros recursos e funcionalidades.

Neste artigo será abordado o módulo ORM (Object Relational Mapping), que está contido em Acesso a Dados/Integração. Como sugere o próprio nome, seu principal objetivo é o mapeamento de objetos para as tabelas de um banco de dados relacional. Para cumprir esta tarefa, este módulo traz suporte à integração de diversos frameworks de persistência e APIs, como Hibernate, Java Data Objects (JDO) e Java Persistence API (JPA).

Figura 1. Estrutura dos módulos do Spring Framework.

O Spring também oferece um excelente controle de transação, gerenciamento declarativo utilizando AOP, hierarquia de exceções independente da tecnologia escolhida, além de desacoplamento e simplificação do código, o que resulta em um código mais limpo e de fácil manutenção, simplificando significativamente a camada de persistência.

Para exemplificar o funcionamento e os recursos que o Spring oferece para mapeamento objeto/relacional, no decorrer deste artigo será construída uma aplicação exemplo simples, a qual irá cadastrar produtos no banco e depois todos os produtos contidos na tabela serão listados em uma página. Para a construção deste exemplo foi escolhido o JPA para fazer a integração com Spring, e o EclipseLink como provider, que é a implementação de referência do JPA 2.0.

Preparando o Ambiente de Trabalho

Para a implementação da aplicação, será usado como IDE o Eclipse para desenvolvimento Java EE, que pode ser baixado em seu site oficial. Algumas bibliotecas também serão necessárias para que seja possível construir a aplicação.

Como já citado anteriormente, para provider foi escolhido o EclipseLink, implementação de referência da Java Persistence API 2.0, e por isso será ele o utilizado aqui. O download do pacote também pode ser feito no site do Eclipse na seção do EclipseLink. O arquivo que deve ser baixado é o EclipseLink 2.0.0 Installer Zip. Após o download você deve descompactá-lo e encontrar as seguintes bibliotecas:

  • eclipselink.jar – Localizada dentro do diretório jlib;
  • javax.persistence_2.0.0.v201002051058.jar – Localizada dentro de jlib/jpa.

Para o Spring Framework, será utilizada a versão 3.0.1, que é a última disponível na data em que este artigo foi escrito. O download pode ser feito no site oficial do Spring. Os arquivos que devem ser baixados serão o spring-framework-3.0.1.RELEASE-A-dependencies.zip, que é o pacote com as dependências do framework e o spring-framework-3.0.1.RELEASE-A.zip, que é o pacote contendo as bibliotecas do framework em si.

No arquivo spring-framework-3.0.1.RELEASE-A-dependencies.zip os diretórios estão organizados pelo nome do pacote da dependência. No nosso caso serão necessárias as seguintes bibliotecas:

  • com.springsource.javax.servlet.jsp.jstl-1.1.2.jar;
  • com.springsource.net.sf.cglib-2.2.0.jar;
  • com.springsource.org.aopalliance-1.0.0.jar;
  • com.springsource.org.apache.commons.logging-1.1.1.jar.

E do arquivo spring-framework-3.0.1.RELEASE-A.zip serão usadas as bibliotecas listadas abaixo:

  • org.springframework.aop-3.0.1.RELEASE.jar;
  • org.springframework.asm-3.0.1.RELEASE.jar;
  • org.springframework.beans-3.0.1.RELEASE.jar;
  • org.springframework.context.support-3.0.1.RELEASE.jar;
  • org.springframework.context-3.0.1.RELEASE.jar;
  • org.springframework.core-3.0.1.RELEASE.jar;
  • org.springframework.expression-3.0.1.RELEASE.jar;
  • org.springframework.jdbc-3.0.1.RELEASE.jar;
  • org.springframework.orm-3.0.1.RELEASE.jar;
  • org.springframework.transaction-3.0.1.RELEASE.jar;
  • org.springframework.web.servlet-3.0.1.RELEASE.jar;
  • org.springframework.web-3.0.1.RELEASE.jar.

Também vamos utilizar um pouco de Spring MVC. Porém, como este não é o foco do artigo, não haverá uma abordagem mais detalhista deste assunto para que o artigo não tome um rumo diferente do proposto, focando apenas na camada de persistência da aplicação.

Como servidor será utilizado o Tomcat, versão 6.0.26. O download pode ser feito no site oficial do Apache Tomcat.

Para o banco de dados, o escolhido foi o PostgreSQL. Caso queira, você poderá escolher qualquer outro banco de sua preferência, mas fique atento ao jar do driver que será necessário e às configurações no arquivo pesistence.xml ...

Quer ler esse conteúdo completo? Tenha acesso completo