jakarta.persistence 替换 javax.persistence

208 阅读2分钟

当你使用Spring Boot时,通常会选择使用jakarta.persistence,因为较新的版本的Java EE(现在称为Jakarta EE)已经迁移到这个命名空间。这包括Java Persistence API (JPA) 的相关类。

在现代的Spring Boot应用中,特别是使用较新版本的Spring Boot和关联的技术时,推荐使用jakarta.persistence。这可以确保你的应用能够适应Java EE(Jakarta EE)的发展,并与未来的Java标准和规范保持一致。

如果你在项目中看到javax.persistence的依赖和导入语句,也许是因为这个项目是基于较早的版本,你可能需要升级相关的依赖项和代码以适应较新的命名空间。在persistence.xml文件中的命名空间声明也需要相应的更改。

在你的项目中添加jakarta.persistence的依赖,例如:

<dependency>
    <groupId>jakarta.persistence</groupId>
    <artifactId>jakarta.persistence-api</artifactId>
    <version>3.0.0</version> <!-- 请根据需要选择适当的版本 -->
</dependency>

确保你的项目的其他依赖项和配置也符合Jakarta EE / Spring Boot的最新标准。

javaxjakarta都是与Java平台相关的软件包名称,它们之间存在一些历史和法律上的区别。

1. javax (Java Extension):

  • javax是Java标准扩展的一部分,它包含了Java平台的一些扩展功能和附加库。javax.persistence是其中的一个子包,包含了Java Persistence API (JPA) 的相关类。
  • 长期以来,Java标准库的一部分都在javax包中,但一些包在发展过程中可能会被移动到新的命名空间,这也是发展的自然过程。

2. jakarta (Jakarta EE):

  • jakarta是Java EE(Enterprise Edition)的继任者。在过去,Java EE是由Oracle进行维护的,但随着Java EE的发展,它在2019年由Eclipse Foundation接管,并更名为Jakarta EE。
  • Jakarta EE包含了一系列企业级Java规范和API,其中也包括了Java Persistence API (JPA)。因此,与JPA相关的包从javax.persistence迁移到了jakarta.persistence

区别和演变:

  • javax.persistence包是JPA的初始版本使用的命名空间。然而,由于Oracle和Eclipse Foundation之间的商标问题,Java EE的一部分(包括javax.persistence)在移交给Eclipse Foundation后被重命名为jakarta.persistence
  • 如果你使用较新版本的Jakarta EE或与Jakarta EE相关的技术(如Jakarta EE Web Profile),你可能会在代码中看到jakarta.persistence
  • 早期使用javax.persistence的项目可能需要进行迁移以适应jakarta.persistence。通常,这涉及到在项目的依赖项和导入语句中进行相应的更新。

总的来说,javax是Java平台的一个传统命名空间,而jakarta则是Java EE的继任者,现在被Eclipse Foundation维护。随着时间的推移,一些标准库和API的包名可能会发生变化,这通常是为了解决法律或商标问题。