差异b / w规范和实施

时间:2014-04-20 14:33:20

标签: java

从网站粘贴的副本:

使用JPA持久保存java类。 第一步是将此java类限定为实体。 这是通过使用@Entity注释标记类来完成的。 使用@Entity注释标记类将告诉持久性引擎,从此类创建的对象可以使用JPA的支持来使它们持久化。

[持久性引擎或持久性提供程序只不过是Java Persistence API的实现。 Java Persistence API只是Sun的一个规范,而不是一个实现,供应商可以按照JPA规范自由实现自己的持久框架。因此,JPA提供了一个可插拔的接口,在运行时可以很容易地将更多的实现与它相关联。]

有人可以向我解释关于技术和外行语言的规范和实施的最后一段。 此外,它是什么意思...... JPA提供了一个可插拔的接口,在运行时可以轻松地将更多的实现与它相关联......

2 个答案:

答案 0 :(得分:1)

JPA是一种标准,它定义了API,注释,预期行为。 Hibernate或Eclipselink是标准(库/ jar)的实现。

它们实际上提供了标准中定义的功能,标准本身只是批准委员会批准为JSR - Java请求规范的书面规范。

使其更具体:

  • 这是JPA,标准 - PDF

  • 这是Hibernate,标准的实现 - 可用的库here

答案 1 :(得分:0)

规范意味着它提供了一个较低级别的框架,就像使用@Entity注释将类视为一个表一样。但是实际的CRUD操作功能在接口方面暴露,因此任何第三方都可以使用自己的方法来保存数据或进行CRUD。

"供应商可以自由地实现他们自己的持久框架",这里的供应商就像hibernate,spring-data,将另一个框架放在JPA的顶层,以提供自己的CRUD。

JPA仅以预定义框架的形式提供非常低级别的抽象,有些东西是由@Entity预定义的,而上层操作是通过可插入的接口打开的,因此第三方将处理查询执行。

有关mongoDB使用hibernate和mongoDB使用Morphia时的更多说明,那么你会发现两者中的映射是相同的,它们是JPA,而CRUD语法和集成是各种各样的,因为hibernate和Morphia是JPA的供应商

相关问题