Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA是否实现javax.persistence.Entity注释?_Java_Hibernate_Jpa_Entity - Fatal编程技术网

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

JPA是否实现javax.persistence.Entity注释?,java,hibernate,jpa,entity,Java,Hibernate,Jpa,Entity,我对谁提供JPA@Entity注释有一些疑问 我知道JPA是ORM工具(如hibernate)的标准规范,这些工具实现了JPA规范 现在,在我的简单项目中,我有一个导入语句: import javax.persistence.Entity; 我的印象是,由于它是“标准”(JPA)规范,JDK提供的一些JAR将包含此注释定义。我在JDK中搜索了各种jar,但没有任何.jar文件包含Entity.class 相反,在hibernate中有一个jar,它具有此实体注释的定义(jar-->hibern

我对谁提供JPA
@Entity注释有一些疑问

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

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

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

相反,在hibernate中有一个jar,它具有此
实体注释的定义(jar-->hibernate jpa XX.jar)


那么,一般来说,这是否意味着这些标准规范不是JDK的一部分,而是由规范实施者提供的呢?

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

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

对于JPA1.0,专家组提供了API jar。
对于JPA2.0和JPA2.1,由于懒惰,专家组没有提供API jar。因此,像
DataNucleus
Hibernate
EclipseLink
这样的JPA提供商必须在JPA实现的同时提供自己的API jar。因此,您应该在JPA providers API jar中找到
@Entity
注释。例如,在.

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

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

对于JPA1.0,专家组提供了API jar。
对于JPA2.0和JPA2.1,由于懒惰,专家组没有提供API jar。因此,像
DataNucleus
Hibernate
EclipseLink
这样的JPA提供商必须在JPA实现的同时提供自己的API jar。因此,您应该在JPA providers API jar中找到
@Entity
注释。例如,

javax.persistence.Entity是persistence-api.jar中提供的注释,没有人“实现它”。JPA不在JDK感谢您的回复。我的意思是谁“编写”实体注释的代码。那么这是否意味着,实现这些规范的提供者提供了所有这些规范的代码?对我来说,似乎是这样。我(我认为是错误的印象)认为规范的接口是由JDK提供的(从导入的地方),而实际的实现是由实现规范的提供者提供的。我想澄清这些疑问,如果你能扩展一点,这将是有帮助的。JPA专家组应该负责提供一个规范、一个API jar和一个TCK。在JPA2.0和JPA2.1的情况下,他们没有提供API jar(由于懒惰),而是让JPA实现提供一个API jar和他们的JPA实现(因此有许多JPA API jar,一个用于Hibernate,一个用于EclipseLink,一个用于DataNucleus…名义上都是一样的)@NeilStockton非常感谢你的回复,事情比以前更清楚了。顺便问一下,什么是TCK?我在谷歌上搜索了一下,得到了一些奇怪的结果,比如“第三文化小子!”。javax.persistence.Entity是persistence-api.jar中提供的注释,没有人“实现它”。JPA不在JDK感谢您的回复。我的意思是谁“编写”实体注释的代码。那么这是否意味着,实现这些规范的提供者提供了所有这些规范的代码?对我来说,似乎是这样。我(我认为是错误的印象)认为规范的接口是由JDK提供的(从导入的地方),而实际的实现是由实现规范的提供者提供的。我想澄清这些疑问,如果你能扩展一点,这将是有帮助的。JPA专家组应该负责提供一个规范、一个API jar和一个TCK。在JPA2.0和JPA2.1的情况下,他们没有提供API jar(由于懒惰),而是让JPA实现提供一个API jar和他们的JPA实现(因此有许多JPA API jar,一个用于Hibernate,一个用于EclipseLink,一个用于DataNucleus…名义上都是一样的)@NeilStockton非常感谢你的回复,事情比以前更清楚了。顺便问一下,什么是TCK?我在谷歌上搜索了一下,得到了一些奇怪的结果,比如“第三文化孩子!”。非常感谢你提供了详细的答案,以及你的评论。我希望我能把你的答案的分数提高一倍。非常感谢!非常感谢您提供详细的答案,以及您的评论。我希望我能把你的答案的分数提高一倍。非常感谢!