繁体   English   中英

如果JPA实际上只是一个规范,那我们该怎么办?

[英]If JPA is really only a specification, then how can we do?

在以下每个人的问题中

JPA和Hibernate有什么区别?

告诉我们JPA是规范,这是没有Eclipselink或Hibernate的抽象

JPA javax.persistence.sth对吗?

此外,我们可以使用诸如

javax.persistence.EntityManager.persiste javax.persistence.EntityManager.delete / remove

编辑

eclipselink和hibernate是否将自己的代码放入这些包,这些类中???

JPA是一个规范,许多实现者提供遵循该规范的实现。

因此,如果按原样使用JPA,则可以从一个或多个实现者中进行选择,并且它应该“即插即用”。 换句话说,您不必更改代码,因为实现将执行规范所承诺的工作。

---关于JPA和Hibernate之间的区别---

JPA是一个规范,但是Hibernate是一个实现。 如果您针对JPA编写代码,则可以轻松地在JPA兼容的实现之间进行更改; 但是,如果您针对Hibernate进行编写,则要进行更改,实际上需要重写数据库访问代码。

请注意,Hibernate还提供了一些JPA兼容性,如果您只使用Hibernate的JPA兼容部分,则您实际上是使用Hibernate提供的实现针对JPA编写的。

有一个进行JPA开发的秘诀,可以很好地防止编写非JPA(特定于实现)的代码。

  1. 找到您要定位的JPA版本的JPA jar。
  2. 将该jar添加到编译类路径和运行时类路径。
  3. 查找您要使用的JPA提供程序(休眠等)。
  4. 将该/那些罐子仅添加到运行时类路径。

JPA是Java持久性API,由JCP(Java社区流程)作为JSR(Java规范请求)发布。

这是一种规范; 换句话说,例如接口,不包含任何实现。

每个对此规范感兴趣的供应商(实施者)都需要按照规范文档中的说明进行实施。

这是示例JPA 2.0规范

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM