1

我们从 Spring 3.x 迁移到 Spring 4.1.6。Spring 4 及以上版本推荐 Hibernate 4 或 Hibernate 3.6.10。但我们计划继续使用 Hibernate 3.2.2,因为在 Hibernate 3.2.2 和 3.6.10 中有几个重大更改,我们计划稍后解决。到目前为止,我们只遇到了一个问题,即 Spring 4 使用了 Hibernate 3.2.2 中缺少的一些异常类。我们能够轻松解决这个问题。

有没有人指出我们可以通过这种组合面临的任何其他问题?或者有关如何找出 Spring 4 正在使用的 Hibernate 3.6 的特定功能的任何指针,这些功能在 hibernate 3.2.2 中缺少?

4

1 回答 1

2

你可以看看 Spring 的官方迁移指南

org.springframework.orm.hibernate3 包将从 Spring Framework 4.2 开始逐步淘汰。我们暂时继续支持;但是,我们强烈建议升级到 Hibernate 4.2/4.3 或 5.0。

从 Spring Framework 4.0.1 开始,我们在 org.springframework.orm.hibernate4 中提供了一个 HibernateTemplate 变体,以简化常见 Hibernate 3.x 数据访问代码的迁移,特别是如果您升级的动机是在休眠 3.x 行。请注意,新编写的代码建议使用 Hibernate 原生的 SessionFactory.getCurrentSession() 样式。

在相关说明中,HibernateInterceptor 在 org.springframework.orm.hibernate3 中已弃用,并且在 org.springframework.orm.hibernate4 中不再存在。作为事务之外的基本 Session 绑定需求的替代品,考虑使用新的 OpenSessionInterceptor 变体,从 Spring Framework 4.0.2 开始可用于 Hibernate 3 和 4。

注意:Spring Framework 4.0.0 版本意外地将 HibernateTemplate 的 List 元素类型限制为仅限 Object。这已在 4.0.2 ( https://jira.springsource.org/browse/SPR-11402 ) 中得到修复,允许立即强制转换到专门键入的列表。如果您在迁移现有 Hibernate 访问代码时遇到任何问题,请先升级到 Spring Framework 4.0.2。

于 2015-05-29T16:03:42.557 回答