今天在做SSH整合的时候遇到了一个hibernate4.3的异常,查看了下源码,发现4.3和4.2有了不同。不知道是因为4,3是beta版的缘故还是hibernate的疏忽,或者说hibernate的jta将发生很大的变化?这些都得等到hibernate4.3的release版本出来了。。。
首先我采用的是hibernate4.3.0beta1,用maven搭建的ssh,pom.xml片段如下:
<!--
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.0.Final</version>
</dependency>
-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.0.Beta1</version>
</dependency>
然后运行junit测试随便写的一个service,出现了如下的错误
我去hibernate-core里面看了下,还真没有这个类。。。
我开始以为是我的pom.xml出错了,仔细检查了半天,没发现错误,就改为4.2.0.final版本试试,程序正常了。。。
4.2.0版本的hibernate-core里面的service里面也找到了org.hibernate.service.jta.platform.spi.JtaPlatform这个类。
同时,发现4.3.0beta1的hibernate中service的package比4.2.0.final少了很多,,,,,难道hibernate对jta的支持要大幅改动么?。。。猜测。。
发完blog,就去hibernate看了一下,看到了下面一段话,我知道hibernate4.3在干嘛了。。。
The Hibernate team is pleased to announce today's release of Hibernate 4.3.0.Beta1 which targets the (still not finalized) JPA 2.1 specification which is part of the upcoming Java EE 7 platform. This is the first release targeting JPA 2.1 support. As mentioned, JPA 2.1 is not completely finalized so this support should be considered a preview.
这段话的大意是;hibenate团队声明hibernate4.3.0.Beta1支持还没有完成的JavaEE 7平台下jpa2.1规范的,所提到的JPA2.1是一个还未完成的规范,所以这个hibernate可以看做是一个预览。
翻译不是很通顺,不过大意我是看懂了,这个hibernate4.3.0beta1正在支持还没完成的JPA2.1规范。。hibernate还真超前啊,,规范都还没完成,他都在筹备支持了。。。也难怪hibernate有这么多拥护者。也不愧为一款优秀的ORM框架。