Integração JPA + Spring


Neste exemplo será utilizado a versão do spring 2.5.6, hibernate-distribuition 3.3.1, hibernate-entitymanager 3.4 e hibernate-annotation 3.4, como IDE está sendo usado o Eclipse e como servidor o Tomcat. Abaixo segue a relação com os jars necessários:

hibernate3.jar c3p0.jar
antlr.jar commons-beanutils-1.7.0.jar
asm.jar commons-pool-1.4.jar
asm-attrs.jar jstl.jar
cglib.jar jta.jar
commons-collections.jar oro.jar
commons-logging.jar slf4j-api.jar
dom4j.jar slf4j-simple.jar
ehcache.jar spring.jar
javassist.jar spring-aop.jar
jta.jar spring-beans.jar
hibernate-annotations.jar spring-context.jar
hibernate-commons-annotations.jar spring-context-support.jar
hibernate-entitymanager.jar spring-core.jar
ejb3-persistence.jar spring-orm.jar
jboss-archive-browsing.jar spring-tx.jar
postgresql-8.2-504.jdbc4.jar spring-web.jar
spring-webmvc.jar standard.jar

No eclipse será criado um Web Dinamic Project, dentro do projeto criado será adicionado as libs no diretório WebContent -> WEB-INF -> lib:

imagem

A aplicação exemplo rodando:

imagem

Clique no link para baixar o tutorial completo em PDF: Spring+JPA

Clique aqui para baixar o projeto sem as libs

Clique aqui para baixar as bibliotecas necessárias

Clique aqui para baixar o sql do exemplo

Anúncios

11 comentários em “Integração JPA + Spring

  1. Primeiramente Parabéns pelo tutorial muito bom, gostei, prático e objetivo.
    Bom mas é seguinte, procurei as libs para o projeto nos repositorio do Maven http://mvnrepository.com/artifact/org.apache.felix/javax.servlet, e no http://www.findjar.com/ e nao encontrei algumas libs, vc sabe onde posso encontrar ou será que tem jeito de vc disponibilizar as libs. Ja tive muito problemas com jars para configura projetos, se vc puder ajudar fico agradecido. Valeu Muito Bom;

  2. Olá Pedro,

    Obrigado pelo feedback, quais as libs vc nao encontrou? Se vc me passar quais são eu posso tentar disponibiliza-las ou enviar o link de onde fazer o download. ok!!!

  3. Cris!! Abaixo os jars que nao encontrei.
    antlr.jar
    cglig.jar
    ehcache.jar
    dom4j.jar
    jboss-achive-browsing.jar
    c3po.jar
    slf4j-api.jar
    slf4j-simple.jar

    Coloquei outros jar com uma versão superior e começou dar erro no jsp.

    Agradeço a atenção, e se puder disponibizar melhor. E confesso estou surpreso de ver este artigo.

    Valeu!!

  4. Boa tarde Cris,
    Fiz o aplicativo conforme vc descreveu no tutorial, inclusive baixei o arquivo e vi que está diferente do criado, mas de qualquer forma deu o seguinte erro:
    página 404 no browser e no netbeans>
    SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0’ defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’ defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: TesteSpringPU] Unable to build EntityManagerFactory
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:883)
    at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:584)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:351)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:251)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
    at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1247)
    at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:377)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’ defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: TesteSpringPU] Unable to build EntityManagerFactory
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1362)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:540)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:296)
    at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:270)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:122)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.(PersistenceExceptionTranslationInterceptor.java:78)
    at org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor.(PersistenceExceptionTranslationAdvisor.java:70)
    at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:96)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1350)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:540)
    … 32 more

  5. Olá Rodrigo, as diferenças entre o exemplo do tutorial e o exemplo que disponibilizei para download são irrelevantes, a maior delas eh que fiz uma DAO Genérica e fiz que a ProductDAO herdassa dela. O tutorial esta mostrando apenas um exemplo básico que pode ser melhorado de várias formas. Pelo que vi na exception que postou, ele nao está conseguindo criar o entityManagerFactory do applicationContext, da uma olhada no seu persistence.xml e nas libs. Pois testei aqui e funcionou normalmente.

  6. oi Cris, obrigado pela dica… no persistence ele nào estava adicionando as classes corretamente… funcionou. E

  7. Parabéns,

    bem bonitinho o exemplo!

    o site é ótimo, muitos conteúdos legais…

    Ab.

  8. Ei Cris tudo bem, sei que já tem um bom tempo que você fez este post, mas você ainda teria o arquivo com os fontes?
    O disponibilizado não está funfando.

    Obrigado.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s