使用java10中的Hazelcast迁移hibernate的二级缓存
译者:developlee
了解如何使用Java 10中的Hazelcast迁移Hibernate二级缓存工具
任何行业的技术都会随着时间而改变,Java技术也是如此。最近,Oracle在2018年3月20日发布了Java 10。这是Java项目结构的范式转变。Oracle Java已经将它的所有jar重构为不同的模块,如java.base 等。现在,就JDK而言,项目的模块也可以模块化。还有,某些包也即将从JDK 10 中删除,如java.xml.binding。这意味着在旧JDK中编译和运行的项目不会在JDK 10中编译。但是,Oracle Java提供了一些特性,通过这些特性,可以在JDK 10中编译和运行使用旧JDK编写的项目。正是因为这样,依赖于不同框架或工具的项目将不会被编译,也不会迁移到JDK 10。
我已经使用Hazelcast中的Hibernate二级缓存工具将项目迁移到JDK 10,并执行了一些测试用例,以确保它正常工作。项目pom文件的maven-surefire-plugin 应更改如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
<configuration>
<argLine>
--illegal-access=deny
--add-modules=java.xml.bind
</argLine>
</configuration>
</plugin>
如前所述,java.xml.binding 即将从JDK 10中删除。因此,Hibernate项目也无法在JDK 10中编译。在上面的代码片段中,标签
包含了在JDK 10中成功执行JUnit 5测试用例的附加参数。
为了实现缓存,Hibernate和Hazelcast配置需要以下依赖项
<!-- Hibernate Core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.17.Final</version>
</dependency>
<!-- Hazelcast -->
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast-hibernate52</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<version>3.9.4</version>
</dependency>
Hibernate和Hazelcast版本的任何其他组合都不能在JDK 10中正确编译或运行。因此,通过在旧JDK中编写的项目中使用Hazelcast作为缓存对Hibernate的pom文件进行上述更改,将使项目在JDK 10环境下成功编译和执行。
源代码可以在:github.com/aloktech/Mi… 获得。