Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring3.1,Hibernate4,SessionFactory_Java_Hibernate_Spring - Fatal编程技术网

Java Spring3.1,Hibernate4,SessionFactory

Java Spring3.1,Hibernate4,SessionFactory,java,hibernate,spring,Java,Hibernate,Spring,这是有效的: ... 但升级到上述版本会破坏它。使用Spring3.1.Release和Hibernate4.0.0.FINAL创建bean的正确方法是什么 部署时的错误是: 嵌套异常为java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider 编辑 添加了我自己的答案,这为我解决了问题。Hibernate 4删除了弃用的CacheProvider相关接口和类,而支持先前发布的RegionFactory相关缓存接口。

这是有效的:


...
但升级到上述版本会破坏它。使用Spring3.1.Release和Hibernate4.0.0.FINAL创建bean的正确方法是什么

部署时的错误是:

嵌套异常为java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider


编辑

添加了我自己的答案,这为我解决了问题。

Hibernate 4删除了弃用的
CacheProvider
相关接口和类,而支持先前发布的
RegionFactory
相关缓存接口。您可以找到版本4缓存包摘要、版本3.2缓存包摘要(就在添加
RegionFactory
接口之前)和版本3.3缓存包摘要(当
RegionFactory
首次发布时)

除了JavaDoc之外,您可能会发现以下文档非常有用:

但是,基于Spring 3.1,Spring 3.1不需要Hibernate 4(在
完全依赖项
部分中,
JBoss Hibernate对象关系映射器
的版本为
3.3.2.GA
)。如果要升级到Hibernate 4,则需要更新缓存设置。否则,请尝试使用Hibernate 3.3.2或更高的3.X版本

更新:请记住,Spring3.1中的Hibernate4文档目前很少。
Spring框架参考文档仅包含以下内容:

Spring3.1引入了,它扩展了Hibernate的

如果您想使用Hibernate4,似乎应该留意一些


更新2:刚刚注意到这个问题与。

我认为您应该使用
org.springframework.orm.hibernate4.LocalSessionFactoryBean
而不是
org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

LocalSessionFactoryBean
javadoc:

注意:LocalSessionFactoryBean的这个变体需要Hibernate4.0或更高版本。它的角色类似于orm.hibernate3包中的同一命名类。然而,在实践中,它更接近AnnotationSessionFactoryBean,因为它的核心目的是从注释扫描引导SessionFactory


我不得不改变一些事情,现在我们开始:

在我的事务管理器设置中更改了3->4:

org.springframework.orm.hibernate4.HibernateTransactionManager;
以及我的sessionFactory(感谢@toxin):


Spring3.1和Hibernate4在很多方面都不兼容。请参阅下面的Spring JIRA使用此配置

休眠配置文件:

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
</bean>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

POM:


cglib
cglib
${cglib版本}
运行时
org.hibernate
休眠实体管理器
${org.hibernate版本}
org.springframework
春季甲虫
${org.springframework版本}
我忘了包括版本,我使用的是hibernate版本:4.1.2.Final和spring版本:3.1.1.RELEASE,hibernate 4.1.3.Final有一个更新,未经测试,但我相信它可以正常工作。

  • 对于Hibernate4.0或更高版本,从Spring4.0开始,您应该使用
org.springframework.orm.hibernate4.LocalSessionFactoryBean
例如:

<bean id="sessionFactory" 
      class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    ...
</bean>

(请参阅)

实际上,它已被弃用。因此,删除是相当可疑的报告是关于,Spring3.x和Hibernate4是不兼容的。无法使用HibernateTemplate。这是因为hibernate4不再支持HibernateTemplate。我也这样做了,得到了org.springframework.beans.NotWritablePropertyException:bean类的无效属性“exposeTransactionAwareSessionFactory”…我看不到orm.hibernate4,只有.hibernate3。您能在这里给出一些见解吗?我已经导入了hibernate 4。。。解决方法:确保同时使用Spring 3.2.4。3.0.5太老了。我刚刚遇到这个例子,我希望这对任何人都有帮助
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
</bean>

<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
    <!-- CGLIB -->
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>${cglib-version}</version>
        <scope>runtime</scope>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${org.hibernate-version}</version>
        <!-- will come with Hibernate core -->
    </dependency>

    <!-- Spring -->
   <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
<bean id="sessionFactory" 
      class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    ...
</bean>