首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区分javax.persistence、javax.persistence-api和javaee

区分javax.persistence、javax.persistence-api和javaee
EN

Stack Overflow用户
提问于 2019-03-14 18:10:15
回答 1查看 1.1K关注 0票数 1

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

  • 我假设" 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版的这个mvn回购中可下载)?
  • 版本7.0中的javaee-api是否已经包含javax.persistence-api,如果包含,那么是哪个版本? 2.1?我如何或在哪里发现这些信息?
  • 如果我使用最新的可能实现,比如EclipseLink 2.7.4 (在2019年第一季度),说明它支持JPA2.2,那么像2.1这样的旧JPA版本是否有向后兼容性?

我很高兴得到任何澄清。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-14 20:57:58

API依赖项用于compile项目。实现可以是运行时的provided (例如Java应用服务器),也可以是构建包含实现的应用程序。如果您不熟悉maven作用域,我建议您阅读

  • 您说得对,javax.persistence-api不包括实现。
  • 那只美文回购是一个eclipselink实现。artifactId在2.3版中从"javax.persistence“更改为"eclipselink”。
  • javaee-api还包括JPA。例如,可以找到这里的Api版本:“Java 7平台需要JavaPersistenceAPI2.1。”维基百科还对web的API版本进行了比较,这可能会澄清问题(web是Java规范的一个子集)。
  • 我不知道JPA2.1/2.2版本之间的兼容性。我总是使用相同的实现版本。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55169368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档