我对谁提供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的一部分,并且是由规范实施者提供的吗?
答案 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。因此,像DataNucleus
,Hibernate
,EclipseLink
这样的JPA提供商必须在其JPA实现的同时提供自己的API jar。因此,您应该在JPA提供程序API jar中找到@Entity
注释。例如,在DataNucleus JPA API jar。