如何将Hibernate从4.3版升级到5.2版以便迁移到JDK 10?

时间:2018-05-07 04:42:35

标签: hibernate jpa hibernate-5.x java-10

由于JDK8 Oracle宣布不再支持,我需要将当前JDK升级为JDK10

经过研究,当前hibernate也需要从hibernate 4升级到hibernate 5,以便在JDK 10.

运行

但是,有一些与hibernate相关的库,我是否应该升级,如果是,哪个版本适合?以下是我当前pom.xml的摘录:

<properties>
<hibernate.version>4.3.11.Final</hibernate.version>
<java-version>1.7</java-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<!-- hibernate -->
<dependency>
     <groupId>org.hibernate.javax.persistence</groupId>  
     <artifactId>hibernate-jpa-2.1-api</artifactId>
     <version>1.0.0.Final</version>
</dependency>

<dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-entitymanager</artifactId>
     <version>${hibernate.version}</version>
</dependency>

<dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-validator</artifactId>
     <version>5.1.2.Final</version>
</dependency>

1 个答案:

答案 0 :(得分:3)

仅仅谈到依赖关系,从Hibernate 4.3.x &gt; = 5.2.x 的升级非常简单。最新的&gt; = 5.2.x版本非常可靠,已经过社区测试很长一段时间了。最新版本&gt; = 5.3.x已于2018年5月发布。

您可以使用以下代码段在pom.xml中完成迁移:

Hibernate 5.2.x

<properties>
    <hibernate.version>5.2.17.Final</hibernate.version>
    <hibernate.validator.version>6.0.10.Final</hibernate.validator.version>

    <java-version>10</java-version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<!-- hibernate -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>${hibernate.version}</version>
</dependency>

<dependency>
     <groupId>org.hibernate</groupId>
     <artifactId>hibernate-validator</artifactId>
    <version>${hibernate.validator.version}</version>
</dependency>

Hibernate 5.3.x

只需将一个属性值替换为:

<hibernate.version>5.3.1.Final</hibernate.version>

所有其他相关的传递依赖关系都会自动通过上述工件引入。

注意

Hibernate 5.2.x中不再存在原始hibernate-entitymanager-...jar代码段使用的pom.xml。与JPA / EntityManager相关的所有内容现已合并到hibernate-core-...jar

Hibernate Validator

从版本 6.0.10 开始,该库完全支持JDK10:

  

您现在可以使用JDK 10构建和使用Hibernate Validator。

参考:http://in.relation.to/2018/05/15/hibernate-validator-6010-final-out/

检查...

此外,请检查项目中的每个persistence.xml文件,以便

  1. 您设置:<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
  2. 并将标头定义为JPA 2.1 兼容:

     <?xml version="1.0" encoding="UTF-8"?>
     <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
         http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
         version="2.1">
    

  3. 以JPA 2.2 符合

     <?xml version="1.0" encoding="UTF-8" ?>
     <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
         http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
         version="2.2">
    
  4. 进一步评论

    理论上,所有重要的依赖关系都应该用上面的代码片段绘制到你的项目中。但是,在实践中,您(很可能)会在现有项目代码的 compile runtime 中遇到一些重大更改。其中许多问题可以通过查看官方迁移指南来解决:

    希望它有所帮助。