javax.persistence、javax.persistence-api和javaeeapi之间的区别

javax.persistence、javax.persistence-api和javaeeapi之间的区别,java,jakarta-ee,javax.persistence,Java,Jakarta Ee,Javax.persistence,我对javax.persistence、javax.persistence-api和javaeeapi的区别和内容感到困惑。JavaEEAPI可能包含更多内容,但我只对JPA内容感兴趣(如果存在于JavaEEAPI中的话)。从抽象的角度来看,有JPA作为规范和一些类似于eclipselink的JPA实现。因此,很容易理解配置中是否有两个依赖项:一个用于规范内容,另一个用于实现。但这似乎有点复杂,所以我有以下问题: 我假设“javax.persistence-api”包含接口之类的东西,因此ja

我对javax.persistence、javax.persistence-api和javaeeapi的区别和内容感到困惑。JavaEEAPI可能包含更多内容,但我只对JPA内容感兴趣(如果存在于JavaEEAPI中的话)。从抽象的角度来看,有JPA作为规范和一些类似于eclipselink的JPA实现。因此,很容易理解配置中是否有两个依赖项:一个用于规范内容,另一个用于实现。但这似乎有点复杂,所以我有以下问题:

  • 我假设“javax.persistence-api”包含接口之类的东西,因此javax.persistence-api包含JPA的编程内容声明,而不实现规范。因此,如果我将2.2版中的javax.persistence-api设置为依赖项(maven或gradle),我定义必须使用JPA2.2(必须由实现支持),如果我将2.1版中的javax.persistence-api设置为依赖项,我定义必须使用/支持JPA2.1。是这样吗

  • “javax.persistence”依赖项(例如在版本2.2.1中可下载)的目的/内容是什么

  • 是否已经包含javax.persistence-api,如果是,是哪个版本?2.1 ? 我如何或在哪里可以发现这些信息

  • 如果我使用最新的可能实现,比如EclipseLink 2.7.4(在2019年第一季度),它表示支持JPA 2.2,那么是否有任何向后兼容到较旧的JPA版本,如2.1


我很高兴得到任何澄清。

API依赖项用于编译您的项目。实现可以由运行时(例如Java EE应用程序服务器)提供,也可以构建应用程序以包含实现。如果您不熟悉maven示波器,我建议您阅读

  • 您是对的,
    javax.persistenceapi
    不包括实现
  • 是一个eclipselink实现。在版本2.3中,artifactId从“javax.persistence”更改为“eclipselink”
  • 还包括JPA。可以找到Api版本,例如:“JavaEE7平台需要JavaPersistenceAPI2.1。”还比较了web概要文件的Api版本,这可能会澄清问题(web概要文件是JavaEE规范的子集)
  • 我不知道JPA2.1/2.2版本之间的兼容性。我总是使用相同的实现版本

编辑:我想您可以在JPA2.2运行时运行JPA2.1应用程序。然而,向后兼容也意味着没有行为差异。新版本具有更多功能,默认情况下可能会启用这些功能。毕竟,JavaEE是关于“约定优先于配置”的。因此,它还取决于您对“向后兼容性”的定义。

API依赖项用于编译您的项目。实现可以由运行时(例如Java EE应用程序服务器)提供,也可以构建应用程序以包含实现。如果您不熟悉maven示波器,我建议您阅读

  • 您是对的,
    javax.persistenceapi
    不包括实现
  • 是一个eclipselink实现。在版本2.3中,artifactId从“javax.persistence”更改为“eclipselink”
  • 还包括JPA。可以找到Api版本,例如:“JavaEE7平台需要JavaPersistenceAPI2.1。”还比较了web概要文件的Api版本,这可能会澄清问题(web概要文件是JavaEE规范的子集)
  • 我不知道JPA2.1/2.2版本之间的兼容性。我总是使用相同的实现版本

编辑:我想您可以在JPA2.2运行时运行JPA2.1应用程序。然而,向后兼容也意味着没有行为差异。新版本具有更多功能,默认情况下可能会启用这些功能。毕竟,JavaEE是关于“约定优先于配置”的。因此,这也取决于你对“向后兼容性”的定义。是的,在这种情况下,向后兼容性意味着没有行为差异。是的,在这种情况下,向后兼容性意味着没有行为差异。