DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Integrando Spring 3.0 e JPA 2.0 - Java Magazine 83

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.






Integrando Spring 3.0 e JPA 2.0
Simplificando a camada de persistência
Aprenda a fazer o mapeamento objeto-relacional (ORM) com Spring 3.0 integrado à JPA 2.0 na camada de persistência de sua aplicação

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:
"


ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    11 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Marcos Estevam De Sousa
Quero te parabenizar pelo artigo, ficou muito bom. Seria interessante nas proximas edições ter uma continuidade do tema incluindo nesta aplicação, autenticação com login, filtros de acesso.

O que acha da proposta?
[há +1 ano] - Responder

 

[autor] Crislaine Da Silva Tripoli
Obrigada Marcos.

É uma boa idéa!!!
[há +1 ano] - Responder
 

Wagner Alves Da Silva Junior

Parabéns pelo artigo mais infelizmente não funcionou pra min.

Você poderia disponibilizar o código fonte?

[há +1 ano] - Responder

 

[autor] Crislaine Da Silva Tripoli
Olá Wagner, obrigada.

Me passe seu email para que eu possa enviar o código fonte pra vc ok!
[há +1 ano] - Responder
 

Devmedia - Equipe De Moderação
Os fontes desse artigo já sen encontram juntamennte com os arquivos dessa edição.
[há +1 ano] - Responder
 

Rodnei Canuto De Vete
Onde eu baixo os fontes deste artigo? Não encontrei nenhum link...
Grato!
[há +1 ano] - Responder
 

Devmedia - Equipe De Moderação
As fontes você baixa no link: http://www.devmedia.com.br/articles/viewcomp.asp?comp=18036
[há +1 ano] - Responder
 

Robson Lira
Olá Crislaine!
Achei este artigo muito bom, inclusive é o que eu estava procurando pois tentei usar o Seam Framework e não consegui entao vi uma saida na utilização do Spring com JPA, fiz um projeto usando o JSF 2 e o Tomcat 7 de resto tudo igual até no banco porque uso PostGreSQL com MS-VFP so que infelismente o tomcat da um erro no log e eu sou novo em Java, na verdade estou na caminhada para tentar dominar a linguagem so que não consigo sair do Erro,

21/03/2011 00:17:30 org.springframework.web.context.ContextLoader initWebApplicationContext
GRAVE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'statusDAOImpl': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'em' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.reflect.UndeclaredThrowableException
at org.springframework.orm.jp

Agora obtive os codigos fontes e vou procurar entender onde estou Errando

Robson Lira
[há +1 ano] - Responder

 

Edvaldo Santiago De Matos
Boa Noite Crislaine,
Muito boa a sua matéria de integração Spring 3 com JPA 2.
Vc poderia passar o código fonte do exemplo para analisar?!!?

Obrigado.

edvaldo.santiago@gmail.com
[há +1 ano] - Responder

 

Caern - Companhia De águas E Esgotos Do Rn
Muito boa a explanação.
Alguém conseguiu colocar o exemplo pra funcionar? O meu apresentou o seguinte problema:

SEVERE: Context initialization failed
java.lang.NoClassDefFoundError: org/aspectj/lang/NoAspectBoundException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
.
.
.

Adicionando o .jar do aspectj, passa a dar erro no ContextLoader.
Alguma ideia do que se trata?
[há +1 mês] - Responder

 

Devmedia - Equipe De Moderacao
Olá, vc pode verificar o seu código junto ao código q acompanha a revista.
[há +1 mês] - Responder
 



[Este post ainda não foi associado a uma sequência]
Publicidade
Autor
Crislaine Da Silva Tripoli

Bacharel em Sistemas de Informação pela Universidade do Vale do Sapucaí, Especialista em Software no Instituto Nacional de Telecomunicações, trabalhando há três anos com desenvolvimento de projetos Java SE e Java EE.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03