为什么Hibernate 5.2支持java.time.Instant,而JPA2不支持



到目前为止,我已经理解JPA是一种规范,Hibernate是基于该规范的ORM工具,我们可以有不同的JPA实现。但是我不明白为什么JPA2不支持java.time.Instant而Hibernate 5.2x支持它

我读过这个问题,为什么jpa不支持java即时,但它没有正确的答案,也没有说明hibernate如何能够为instant作为jpa特定的实现提供支持。

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

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

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

最新更新