【发布时间】:2016-09-09 06:23:47
【问题描述】:
我对谁提供 JPA @Entity annotation 有一些疑问。
我了解 JPA 是 ORM 工具(如 hibernate)的标准规范,这些工具实现了 JPA 规范。
现在在我的简单项目中,我有一个导入语句:
import javax.persistence.Entity;
我的印象是,因为它是“标准”(JPA)规范,所以会有 JDK 提供的一些 jar 会包含这个 Annotation 定义。我在 JDK 中的各种 jar 中进行了搜索,但没有任何具有 Entity.class 的 .jar 文件。
在 hibernate 中,有一个 jar 具有此 Entity annotation 的定义(jar --> hibearnate-jpa-XX.jar)
那么,这是否意味着这些标准规范不是 JDK 的一部分,而是由规范实施者提供的?
【问题讨论】:
-
javax.persistence.Entity 是 persistence-api.jar 中提供的一个 ANNOTATION 没有人“实现它”。 JPA 不在 JDK 中
-
感谢您的回复。我的意思是谁“编写”了 Entity 注释的代码。那么这是否意味着,实现这些规范的提供者提供了所有这些的代码?对我来说,看起来是这样。我认为(我认为是错误的印象)规范的接口是由 JDK 提供的(导入的来源),而实际的实现来自实现规范的提供者。我想解开这些疑惑,如果你能扩展一下,会很有帮助的。
-
JPA 专家组应该负责提供规范、API jar 和 TCK。在 JPA 2.0 和 JPA 2.1 的情况下,他们没有提供 API jar(由于懒惰)并将其留给 JPA 实现来提供 API jar 以及他们的 JPA 实现(因此那里有很多 JPA API jar,一个用于 Hibernate,一个用于 EclipseLink,一个用于 DataNucleus ......名义上都是一样的)。
-
@NeilStockton 非常感谢您的回复,事情比以前更清楚了。顺便问一下,TCK 是什么?我搜索了这个,得到了一些奇怪的结果,比如“第三文化孩子!”。