2010-11-03 9 views
16

Desidero aggiornare il mio Maven pom.xml con le ultime dipendenze di ibernazione, di sospensione e di ehcache.Quali sono le dipendenze Maven per utilizzare le annotazioni di ibernazione, di ibernazione e ehcache?

Ho letto la pagina di download di ibernazione e la pagina di download di ehcache. Tutti i miei tentativi di interpretarlo sembrano fallire. Qualcuno può scrivere lo snippet che dovrebbe andare in pom.xml?

Cryptic pagina hibernate scaricare: http://hibernate.org/downloads

Cryptic pagina EHCache scaricare: http://www.terracotta.org/dl/ehcache-oss-download-catalog

Ecco quello che ho finora:

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

Lo so, sembra un gran casino , perché non mi sembra di capire, dove sono archiviate tutte le dipendenze.

È possibile che questo viene a mancare con:

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

Aggiornamento: Pascal, la risposta è molto chiara e ben spiegato. Tuttavia, l'ibernazione non riesce ancora all'avvio.

  1. sl4j gettato errori, che è andato via con l'aggiunta di:

    <dependency> 
        <groupId>org.slf4j</groupId> 
        <artifactId>slf4j-log4j12</artifactId> 
        <version>1.6.1</version> 
    </dependency> 
    
  2. Ci sono molti casi di questo avvertimento:

    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. Inoltre, questo errore rende tutto falliscono:

    Cause correlate:

    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) 
    

A conferma, questa è la configurazione di 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> 

Aggiornamento: Questo sembra essere l'ultima eccezione che ibernazione viene bloccato su:

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

Prova senza il tuo EHCache .xml per ora (es. rimuovilo dalla tua configurazione di primavera). –

+0

Quando rimuovo tutte le voci ehcache in hibernateproperties, l'app si avvia correttamente. Quando rimuovo solo la voce configurationResourceName, viene indicato che sta utilizzando la configurazione di failover. La formattazione – Thomas

risposta

19

Se significa veramente le versioni finali delle annotazioni di ibernazione (e non di ibernazione-entità manager) e di ehcache, quindi avrai bisogno di quanto segue:

A partire da Hibernate 3.6, il supporto JDK 1.4 è stato eliminato e le Annotazioni di Hibernate sono state unite in Core.

Si intendeva Hibernate EntityManager, quindi sostituire hibernate-core per hibernate-entitymanager nel frammento di cui sopra.

Per quanto riguarda EHCache, ehcache-core dovrebbe fornire tutto ciò che è necessario (comprese le implementazioni del "nuovo" Hibernate 3.3/3.5 caching SPI con il suo CacheRegionFactory).Così, come documented:

Setting Ehcache as the Hibernate Second Level Cache

Hibernate 3.3 e superiori

ATTENZIONE Hibernate 3.2 UTENTI

Assicurati di notare il cambiamento sia al nome della proprietà e il valore.

Usa:

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

per la creazione esempio, o

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

per forzare Hibernate utilizzare un Singleton di EHCache CacheManager.


Follow-up: Per rispondere alla tua aggiornamento:

sl4j gettato errori, che è andato via con l'aggiunta di (...)

Beh, posso Indovina quale framework di registrazione stai usando, a condizione che il binding della tua scelta sia stato lasciato come esercizio per il lettore :)

ci sono molti casi di questo avviso (...)

ottengo solo un WARNING durante l'esecuzione in un ambiente non JTA. Se questo è il tuo caso (un ambiente non JTA), considererei lo WARNING come normale. Se non è il tuo caso, dai un'occhiata alla documentazione su JTA.

Inoltre, questo errore rende tutto sicuro

Questo è in qualche modo una questione diversa (ma sembra che il SessionFactory non riesce a inizializzare correttamente, attivare la registrazione a capire perché) e mi consiglia di inserire un nuovo domanda specifica di primavera

+0

nella casella dei commenti è orribile, aggiornerà la domanda sopra. – Thomas

+0

Pascal, ancora grazie mille per il tuo aiuto.Sembri molto acuto. E probabilmente ha senso iniziare una nuova domanda per il problema di configurazione. – Thomas

4

Si può andare da questo pom.xml Se si integra Spring 3 con Hibernate 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> 

E se si desidera diverse versioni di ibernazione è possibile controllare 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

Si prega di modificare con ulteriori informazioni. Le risposte solo per codice e "prova questo" sono scoraggiate, perché non contengono contenuti ricercabili e non spiegano perché qualcuno dovrebbe "provare questo". – abarisone