JPA是否实现javax.persistence.Entity注释?
我对谁提供JPAJPA是否实现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
@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?我在谷歌上搜索了一下,得到了一些奇怪的结果,比如“第三文化孩子!”。非常感谢你提供了详细的答案,以及你的评论。我希望我能把你的答案的分数提高一倍。非常感谢!非常感谢您提供详细的答案,以及您的评论。我希望我能把你的答案的分数提高一倍。非常感谢!