为什么在Hibernate 5.2中支持java.time.Instant但在JPA 2中不支持?

问题描述 投票:-1回答:1

到目前为止我已经了解JPA是一个规范,Hibernate是基于该规范的ORM工具,我们可以有不同的JPA实现。但我无法理解JPA 2如何支持java.time.Instant但Hibernate 5.2x支持它。

我已经阅读了这个问题why-jpa-does-not-support-java-time-instant,但它没有正确的答案,也没有说明hibernate如何能够为Instant作为JPA特定实现提供支持。

java hibernate jpa jpa-2.0 java.time.instant
1个回答
4
投票

JPA只是一个规范 - 它是一组提供通用API的接口。它描述了对关系数据库的访问,以帮助开发人员管理多个dbms供应商。 JPA有多种实现,参考是Eclipse公共许可下开发的EclipseLink。换句话说,它是一个标准,如SQL-92或SQL:2006。声称支持给定标准的数据库可以在其外部实现自己的功能,以便更轻松地访问数据。

为了使用JPA,我们需要一个实现。除EclipseLink外,最常见的是Hibernate,OpenJPA和DataNucleus。所有这些都支持JPA 2.2。

它们实现了JPA规范,但也提供了其他功能来克服JPA的一些缺点。这些功能是实现之间的主要区别,并使代码具体,即,例如,使用Hibernate时,需要在更改JPA规范时进行代码更改。只有在使用JPA时,我们才能在实现之间切换。但是,我从未见过任何改变JPA供应商的项目。

© www.soinside.com 2019 - 2024. All rights reserved.