Mryqu's Notes


  • 首页

  • 搜索
close

Hibernate3.X升级到4.X实践

时间: 2013-06-07   |   分类: Service+JavaEE     |   阅读: 87 字 ~1分钟

Jar调查

|jar文件|Hibernate 4.2.2|当前的Hibernate|操作 |— |antlr.jar|required, 2.7.7|3.2.0|无需改变。 |dom4j.jar|required, 1.6.1|1.6.1|无需改变。 |hibernate-commons-annotations.jar|required, 4.0.2|3.3.1|替换。 |hibernate-corel.jar|required, 4.2.2|3.2.6|替换。 |hibernate-jpa-2.0-api.jar|required, 1.0.1||增加。 |javassist.jar|required, 3.15.0|3.15.0|无需改变。 |jboss-logging.jar|required, 3.1.0||增加。 |jboss-transaction-api_1.1_specl.jar|required, 1.0.1||一开始增加,后来去掉了。 |hibernate-annotations.jar|null|3.3.1|去掉。从Hibernate3.6.0开始hibernate-annotations被合并到hibernate-core。 |hibernate-entitymanager.jar|jpa, 4.2.2|3.2.2|替换。

修改HibernateUtil

将AnnotationConfiguration替换成Configuration; 在使用ServiceRegistry;

Configuration config = new Configuration().configure();
ServiceRegistry  serviceRegistry = newServiceRegistryBuilder()
 .applySettings(config.getProperties()).buildServiceRegistry();
sessionFactory = config.buildSessionFactory(serviceRegistry);

Hibernate4不支持Ant HibernateToolTask。

使用Hibernate3和HibernateToolTask创建hibernate.cfg.xml 使用Hibernate4编译。 https://community.jboss.org/thread/177200

修改Web容器下的jar文件

  • 替换hibernate3.jar为hibernate-core.jar
  • 替换hibernate-commons-annotations.jar
  • 删除ejb3-persistence.jar
  • 删除hibernate-annotations.jar
  • 复制hibernate-entitymanager.jar
  • 复制hibernate-jpa-2.0-api.jar
  • 复制jboss-logging.jar
  • 复制jboss-transaction-api_1.1_spec.jar (最终没有复制)

通过删除jboss-transaction-api_1.1_spec.jar解决TransactionManager冲突

org.springframework.jndi.TypeMismatchNamingException: Objectof type [class com.atomikos.icatch.jta.J2eeTransactionManager]available at JNDI location [java:comp/env/TransactionManager] isnot assignable to [javax.transaction.TransactionManager]

通过删除ejb3-persistence.jar解决javax.persistence冲突

java.lang.NoSuchMethodError:javax.persistence.OneToMany.orphanRemoval()

ejb3-persistence.jar和hibernate-jpa-2.0-api.jar冲突。hibernate-jpa-2.0-api.jar无法删除,否则会导致java.lang.ClassNotFoundException:javax.persistence.Access。

Atomikos没有正式支持Hibernate4,使用临时方案

java.lang.ClassNotFoundException:org.hibernate.transaction.JTATransactionFactory

AtomikosJTATransactionFactory扩展org.hibernate.transaction.JTATransactionFactory(实现org.hibernate.transaction.TransactionFactory接口). 在hibernate4实现中,JTATransactionFactory已被org.hibernate.engine.transaction.internal.jta.JtaTransactionFactory(实现org.hibernate.engine.transaction.spi.TransactionFactory接口)所取代。 http://fogbugz.atomikos.com/default.asp?community.6.2843.5

通过修改hibernate.cfg.xml配置解决NoClassDefFoundError

java.lang. NoClassDefFoundError: Could not load requestedclass :org.hibernate.hql.classic.ClassicQueryTranslatorFactory

将hibernate.query.factory_class设置为org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory

java.lang.NoClassDefFoundError:org/hibernate/cache/QueryCacheFactory

将hibernate.cache.query_cache_factory设置为org.hibernate.cache.internal.StandardQueryCacheFactory

标题:Hibernate3.X升级到4.X实践
作者:mryqu
声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

#hibernate# #hibernate3# #hibernate4# #升级# #实践#
Hibernate3 HQL: ClassCastException解决办法
多维数据遍历
  • 文章目录
  • 站点概览

Programmer & Architect

662 日志
27 分类
1472 标签
GitHub Twitter FB Page
    • Jar调查
    • 修改HibernateUtil
    • Hibernate4不支持Ant HibernateToolTask。
    • 修改Web容器下的jar文件
    • 通过删除jboss-transaction-api_1.1_spec.jar解决TransactionManager冲突
    • 通过删除ejb3-persistence.jar解决javax.persistence冲突
    • Atomikos没有正式支持Hibernate4,使用临时方案
    • 通过修改hibernate.cfg.xml配置解决NoClassDefFoundError
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%