JPA impementor是否实现了javax.persistence.Entity注释?

时间:2016-05-13 07:12:15

标签: java hibernate jpa entity

我对谁提供JPA @Entity annotation有疑问。

据我所知,JPA是ORM工具的标准规范(如hibernate),这些工具实现了JPA规范。

现在在我的简单项目中,我有一个import语句:

import javax.persistence.Entity;

我的印象是,因为它是"标准" (JPA)规范,将有 JDK提供的一些jar ,它们将包含此Annotation定义。我在JDK的各种jar中搜索过,但是没有任何.jar文件有 Entity.class

而在休眠中有一个jar,它有这个Entity annotation的定义(jar - > hibearnate-jpa-XX.jar)

那么,这些标准规范通常不是JDK的一部分,并且是由规范实施者提供的吗?

1 个答案:

答案 0 :(得分:2)

JPA规范由JCP和专家组编写。#34>。专家组负责提供规范(文档),API jar(规范中定义的接口,注释)和TCK(测试兼容性工具包),用于确认实现是否正确实现规范。在JPA的情况下," TCK"是秘密,所以一般公众无法测试JPA提供商的合规性(请说明他们为什么这样做)。

API jar包含@Entity注释以及规范中定义的所有其他内容。

对于JPA 1.0,专家组提供了API jar,seen here。 对于JPA 2.0和JPA 2.1,专家组由于懒惰而未提供API jar。因此,像DataNucleusHibernateEclipseLink这样的JPA提供商必须在其JPA实现的同时提供自己的API jar。因此,您应该在JPA提供程序API jar中找到@Entity注释。例如,在DataNucleus JPA API jar