使用hibernate,hibernate注释和ehcache的Maven依赖是什么?

Tho*_*mas 16 dependencies hibernate ehcache maven

我想用最新的hibernate,hibernate-annotations和ehcache依赖项来更新我的Maven pom.xml.

我阅读了hibernate下载页面和ehcache donwload页面.我试图解释它似乎都失败了.有人可以写出应该进入pom.xml的片段吗?

Cryptic hibernate下载页面:http: //hibernate.org/downloads

Cryptic ehcache下载页面:http: //www.terracotta.org/dl/ehcache-oss-download-catalog

这是我到目前为止:

   <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>
Run Code Online (Sandbox Code Playgroud)

我知道,它看起来像一个大混乱,因为我似乎没有弄清楚,所有依赖关系存储在哪里.

以上失败的原因是:

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

更新:Pascal,您的回复非常明确并且解释得很好.但是,hibernate在启动时仍然失败.

  1. sl4j引发了错误,通过添加:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.1</version>
    </dependency>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这个警告有很多例子:

    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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 此外,此错误使一切都失败:

    相关原因:

    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)
    
    Run Code Online (Sandbox Code Playgroud)

要确认,这是弹簧配置:

<!-- 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>
Run Code Online (Sandbox Code Playgroud)

更新:这似乎是hibernate陷入困境的最新例外:

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)
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 21

如果你真的是指hibernate-annotations(而不是hibernate-entitymanager)和ehcache的终极版本,那么你需要以下内容:

<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>
Run Code Online (Sandbox Code Playgroud)

从Hibernate 3.6开始,JDK 1.4支持已被删除,Hibernate Annotations已合并回Core.

我你的意思是休眠的EntityManager,然后替换hibernate-corehibernate-entitymanager在上面的代码片段.

关于EHCache,ehcache-core应该提供您需要的一切(包括"新" Hibernate 3.3/3.5缓存SPI的实现CacheRegionFactory).所以,如记录:

将Ehcache设置为Hibernate二级缓存

Hibernate 3.3及更高版本

注意HIBERNATE 3.2用户

请务必记下属性名称和值的更改.

使用:

<property name="hibernate.cache.region.factory_class">
          net.sf.ehcache.hibernate.EhCacheRegionFactory</property>
Run Code Online (Sandbox Code Playgroud)

例如创造,或

<property name="hibernate.cache.region.factory_class">
          net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory</property>
Run Code Online (Sandbox Code Playgroud)

强制Hibernate使用单个Ehcache CacheManager.


跟进:回答您的更新:

sl4j引发了错误,通过添加(...)而消失

好吧,我猜不出你正在使用什么日志框架,提供你选择的绑定作为读者的练习:)

这个警告有很多例子(......)

WARNING在非JTA环境中运行时,我只得到一个.如果那是你的情况(非JTA环境),我认为这WARNING是正常的.如果不是这种情况,请查看有关JTA的文档.

此外,此错误使一切都失败

这在某种程度上是一个不同的问题(但看起来SessionFactory无法正确初始化,激活日志记录以查明原因)我建议发布一个新的特定于春天的问题.