繁体   English   中英

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

[英]Do JPA impementor implement javax.persistence.Entity annotation?

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

我了解JPA是ORM工具(例如休眠)的标准规范,并且这些工具实现了JPA规范。

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

import javax.persistence.Entity;

我的印象是,由于它是“标准”(JPA)规范,因此JDK提供一些罐子,其中将包含此注释定义。 我在JDK中搜索了各种jar,但是没有任何具有Entity.class的 .jar文件。

而是在休眠状态下,有一个具有此Entity annotation定义的jar(jar-> hibearnate-jpa-XX.jar)

那么,这通常意味着这些标准规范不是JDK的一部分,而是由规范实现者提供的吗?

JPA规范是由JCP和一个“专家组”编写的。 专家组负责提供规范(文档),API jar(接口,规范中定义的注释)和用于确认实现是否正确实施规范的TCK(测试兼容性工具包)。 对于JPA,“ TCK”是秘密的,因此公众无法测试JPA提供者的合规性(请弄清楚他们为什么这样做)。

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

对于JPA 1.0,专家组提供了API jar,请参见此处 对于JPA 2.0和JPA 2.1,专家组由于懒惰而未提供API jar。 因此,诸如DataNucleusHibernateEclipseLink类的JPA提供者必须在其JPA实现旁边提供自己的API jar。 因此,您应该在JPA提供程序API jar中找到@Entity批注。 例如,在DataNucleus JPA API jar中

暂无
暂无

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

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