JPA 3在2020年发布了。但主流用的比较多的仍然是JPA 2.2
与JPA 2.2相比,3.0几乎没有任何实质性的功能上的更新,而只是做了一件事情,那就是“修改了下JPA的包名”
JPA 3.0的最大也是几乎唯一变动的地方,就是将JPA的类的包名发生了变更,还有就是xml配置文件中的namespaces发生变更
代码语言:javascript复制包名变更
//从javax.persistence
import javax.persistence.*;
//变更为jakarta.persistence
import jakarta.persistence.*;
代码语言:javascript复制XML namespaces变更
http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/orm
<!-- 变更为 -->
https://jakarta.ee/xml/ns/persistence
https://jakarta.ee/xml/ns/persistence/orm
为什么
因为JPA做为JavaEE中的一个重要功能,Oracle公司在JavaEE 8之后,决定将其捐献给Eclipse基金会运作。
在捐献时,Oracle附带了一个要求:
不能使用原品牌名称,必须以新的名称取代
于是JPA在3.0之后,变成了Jakarta Persistence,当然它的包名等一些地方也需要做出相应的修改。
是的,这就是全部原因。
而且你会发现,已经没有Java EE9了。只有Jakarta EE 9
谁支持了JPA 3.0
以下实现支持了JPA 3
- DataNucleus (from version 6.0)
- EclipseLink (from version 3.0)
- Hibernate (from version 5.5)
当然,相信大多数的程序员们用的可能是Spring Data Jpa,或者就是直接的Hibernate了。
那你知道Spring Data Jpa,Hibernate,以及JPA之间究竟是个什么关系么?