2010-11-03 26 views
16

Me gustaría actualizar mi Maven pom.xml con las últimas dependencias de hibernación, hibernación-anotación y ehcache.¿Cuáles son las dependencias de Maven para usar hibernate, hibernate annotations y ehcache?

Leo la página de descarga de hibernación y la página de descarga de ehcache. Todos mis intentos de interpretarlo parecen fallar. ¿Alguien puede escribir el fragmento que debe entrar en pom.xml?

Cryptic página de hibernación descarga: http://hibernate.org/downloads

Cryptic página ehcache descarga: http://www.terracotta.org/dl/ehcache-oss-download-catalog

Esto es lo que tengo hasta ahora:

<properties> 
     <hibernate.version>3.6.0.Final</hibernate.version> 
    </properties> 
    <dependencies> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.transaction</groupId> 
       <artifactId>jta</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>net.sf.ehcache</groupId> 
       <artifactId>ehcache</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-ehcache</artifactId> 
     <version>${hibernate.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>net.sf.ehcache</groupId> 
       <artifactId>ehcache</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>net.sf.ehcache</groupId> 
     <artifactId>ehcache</artifactId> 
     <version>2.2.0</version> 
     <type>pom</type> 
    </dependency> 
</dependencies> 

    <repositories> 
     <repository> 
      <id>codehaus-repository</id> 
      <name>Codehaus</name> 
      <url>https://nexus.codehaus.org/content/repositories/releases/</url> 
      <layout>default</layout> 
     </repository> 
     <repository> 
      <id>java.net</id> 
      <url>http://download.java.net/maven/1</url> 
      <layout>legacy</layout> 
     </repository> 
     <repository> 
      <id>central</id> 
      <name>Maven Repository Switchboard</name> 
      <layout>default</layout> 
      <url>http://repo1.maven.org/maven2</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>sonatype-ehcache</id> 
      <url>http://oss.sonatype.org/content/repositories/sourceforge-releases</url> 
      <layout>default</layout> 
     </repository> 
     <repository> 
      <id>JBoss Repository</id> 
      <url>https://repository.jboss.org/nexus/content/groups/public</url> 
      <layout>default</layout> 
     </repository> 
    </repositories> 

que sé, se ve como un gran lío , porque parece que no lo sé, donde se almacenan todas las dependencias.

lo anterior falla con:

Invocation of init method failed; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) 

Actualización: Pascal, su respuesta es muy clara y bien explicado. Sin embargo, hibernate aún falla al inicio.

  1. sl4j arrojó errores, que se fueron añadiendo:

    <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-log4j12</artifactId> 
        <version>1.6.1</version> 
    </dependency> 
    
  2. Hay muchos ejemplos de esta advertencia:

    g in the two-phase commit! 
    1797 [main] WARN net.sf.ehcache.hibernate.AbstractEhcacheRegionFactory - No Tr 
    ansactionManagerLookup found in Hibernate config, XA Caches will be participatin 
    
  3. Además, este error hace que todo falla:

    Causa relacionada:

    org.springframework.beans.factory.BeanCreationException: Error creating bean wit 
    h name 'financialDAO' defined in ServletContext resource [/WEB-INF/config/applic 
    ationContext-database.xml]: Cannot resolve reference to bean 'transactionManager 
    ' while setting bean property 'transactionManager'; nested exception is org.spri 
    ngframework.beans.factory.BeanCreationException: Error creating bean with name ' 
    transactionManager' defined in ServletContext resource [/WEB-INF/config/applicat 
    ionContext-database.xml]: Cannot resolve reference to bean 'sessionFactory' whil 
    e setting bean property 'sessionFactory'; nested exception is org.springframewor 
    k.beans.factory.BeanCreationException: Error creating bean with name 'sessionFac 
    tory' defined in ServletContext resource [/WEB-INF/config/applicationContext-dat 
    abase.xml]: Invocation of init method failed; nested exception is java.lang.Null 
    PointerException 
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver 
    .resolveReference(BeanDefinitionValueResolver.java:328) 
    

Para confirmar, esta es la configuración de la primavera:

<!-- Enable EHCache --> 
<prop key="hibernate.cache.use_second_level_cache">true</prop> 
<prop key="hibernate.cache.use_query_cache">false</prop> 
<prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop> 
<prop key="net.sf.ehcache.configurationResourceName">/ehcache.xml</prop> 

Actualización: Esta parece ser la última excepción de que Hibernate se queda atascado en:

Caused by: java.lang.NullPointerException 
    at net.sf.ehcache.hibernate.HibernateUtil.loadAndCorrectConfiguration(HibernateUtil.java:48) 
    at net.sf.ehcache.hibernate.EhCacheRegionFactory.start(EhCacheRegionFactory.java:79) 
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:236) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1842) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:855) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:774) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409) 
+0

Try sin su ehcache .xml por ahora (es decir, eliminarlo de su configuración de primavera). –

+0

Cuando elimino todas las entradas de ehcache en hibernateproperties, la aplicación comienza bien. Cuando elimino solo la entrada configurationResourceName, dice que está usando la configuración de failover. El formato – Thomas

Respuesta

19

Si realmente significa las últimas versiones de hibernate-anotaciones (y no hibernate-entitymanager) y ehcache, entonces necesitarás lo siguiente:

<project> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.6.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sf.ehcache</groupId> 
     <artifactId>ehcache-core</artifactId> 
     <version>2.2.0</version> 
    </dependency> 
    ... 
    </dependencies> 

    <repositories> 
    <repository> 
     <id>repository.jboss.org-public</id> 
     <name>JBoss repository</name> 
     <url>https://repository.jboss.org/nexus/content/groups/public</url> 
    </repository> 
    </repositories> 
    ... 
</project> 

A partir de Hibernate 3.6, se ha eliminado el soporte de JDK 1.4 y las Anotaciones de Hibernate se han fusionado de nuevo en Core.

Me refiero a Hibernate EntityManager, luego reemplace hibernate-core por hibernate-entitymanager en el fragmento de arriba.

Con respecto a EHCache, ehcache-core debe proporcionar todo lo que necesita (incluidas las implementaciones del "nuevo" Hibernate 3.3/3.5 caching SPI con su CacheRegionFactory).Así que, como documented:

Setting Ehcache as the Hibernate Second Level Cache

Hibernate 3.3 y superior

ATENCIÓN Hibernate 3.2 USUARIOS

Asegúrese de tener en cuenta el cambio en tanto el nombre de la propiedad y el valor.

Uso:

<property name="hibernate.cache.region.factory_class"> 
      net.sf.ehcache.hibernate.EhCacheRegionFactory</property> 

para la creación de la instancia, o

<property name="hibernate.cache.region.factory_class"> 
      net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory</property> 

para forzar a Hibernate a utilizar un producto único de Ehcache CacheManager.


Seguimiento: Para responder a su actualización

sl4j arrojó errores, que se fueron añadiendo (...)

Bueno, yo puedo 'adivine qué marco de registro está utilizando, proporcionando el enlace de su elección se dejó como un ejercicio para el lector :)

hay muchos casos de esta advertencia (...)

consigo sólo una WARNING cuando se ejecuta en un entorno no JTA. Si ese es tu caso (un entorno que no es JTA), consideraría el WARNING de forma normal. Si ese no es su caso, eche un vistazo a la documentación sobre JTA.

Además, este error hace que todo falle

Esto es de alguna manera una pregunta diferente (pero parece que el SessionFactory no puede inicializar correctamente, activar el registro para ver por qué) y sugiero a publicar un nuevo pregunta específica de primavera.

+0

en el cuadro de comentarios es horrible, actualizará la pregunta anterior. – Thomas

+0

Pascal, de nuevo muchas gracias por su ayuda.Pareces muy agudo. Y, probablemente tenga sentido comenzar una nueva pregunta para el problema de configuración. – Thomas

4

Se puede ir en este pom.xml Si está integrando la primavera con Hibernate 3 3

<properties> 
    <org.springframework.version>3.0.5.RELEASE</org.springframework.version> 
</properties> 

<dependencies> 
    <!-- Core utilities used by other modules. Define this if you use Spring 
     Utility APIs (org.springframework.core.*/org.springframework.util.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Expression Language (depends on spring-core) Define this if you use 
     Spring Expression APIs (org.springframework.expression.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-expression</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Bean Factory and JavaBeans utilities (depends on spring-core) Define 
     this if you use Spring Bean APIs (org.springframework.beans.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Aspect Oriented Programming (AOP) Framework (depends on spring-core, 
     spring-beans) Define this if you use Spring AOP APIs (org.springframework.aop.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Application Context (depends on spring-core, spring-expression, spring-aop, 
     spring-beans) This is the central artifact for Spring's Dependency Injection 
     Container and is generally always defined --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Various Application Context utilities, including EhCache, JavaMail, 
     Quartz, and Freemarker integration Define this if you need any of these integrations --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Transaction Management Abstraction (depends on spring-core, spring-beans, 
     spring-aop, spring-context) Define this if you use Spring Transactions or 
     DAO Exception Hierarchy (org.springframework.transaction.*/org.springframework.dao.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- JDBC Data Access Library (depends on spring-core, spring-beans, spring-context, 
     spring-tx) Define this if you use Spring's JdbcTemplate API (org.springframework.jdbc.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Object-to-Relation-Mapping (ORM) integration with Hibernate, JPA, 
     and iBatis. (depends on spring-core, spring-beans, spring-context, spring-tx) 
     Define this if you need ORM (org.springframework.orm.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Object-to-XML Mapping (OXM) abstraction and integration with JAXB, 
     JiBX, Castor, XStream, and XML Beans. (depends on spring-core, spring-beans, 
     spring-context) Define this if you need OXM (org.springframework.oxm.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-oxm</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Web application development utilities applicable to both Servlet and 
     Portlet Environments (depends on spring-core, spring-beans, spring-context) 
     Define this if you use Spring MVC, or wish to use Struts, JSF, or another 
     web framework with Spring (org.springframework.web.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Spring MVC for Servlet Environments (depends on spring-core, spring-beans, 
     spring-context, spring-web) Define this if you use Spring MVC with a Servlet 
     Container such as Apache Tomcat (org.springframework.web.servlet.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Spring MVC for Portlet Environments (depends on spring-core, spring-beans, 
     spring-context, spring-web) Define this if you use Spring MVC with a Portlet 
     Container (org.springframework.web.portlet.*) --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc-portlet</artifactId> 
     <version>${org.springframework.version}</version> 
    </dependency> 

    <!-- Support for testing Spring applications with tools such as JUnit and 
     TestNG This artifact is generally always defined with a 'test' scope for 
     the integration testing framework and unit testing stubs --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${org.springframework.version}</version> 
     <scope>test</scope> 
    </dependency> 


    <!-- Hibernate resources --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.6.7.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>4.3.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>3.3.0.ga</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-annotations</artifactId> 
     <version>3.3.1.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.3.2.GA</version> 
    </dependency> 
    <!-- EhCache --> 
    <dependency> 
     <groupId>net.sf.ehcache</groupId> 
     <artifactId>ehcache-core</artifactId> 
     <version>2.2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>antlr</groupId> 
     <artifactId>antlr</artifactId> 
     <version>2.7.7</version> 
    </dependency> 


    <!-- Taglibs --> 

    <dependency> 
     <groupId>taglibs</groupId> 
     <artifactId>standard</artifactId> 
     <version>1.1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>20030825.184428</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-pool</groupId> 
     <artifactId>commons-pool</artifactId> 
     <version>20030825.183949</version> 
    </dependency> 

    <!-- Log4j --> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.14</version> 
     <type>jar</type> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.mail</groupId> 
       <artifactId>mail</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.5.6</version> 
    </dependency> 


    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.4</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

Y si quieres diferentes versiones de hibernación puede comprobar here

0
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>5.2.2.Final</version> 
</dependency> 
+0

Por favor edite con más información. Se desalientan las respuestas de solo código y "prueba esto", ya que no contienen contenido que se pueda buscar y no explican por qué alguien debe "probar esto". – abarisone

Cuestiones relacionadas