JPA注解 = EJB3注解 = Hibernate注解?

4
我正在使用JBoss工具将数据库模式转换为POJO。具体来说,我正在使用hibernatetool ANT任务中的hbm2java选项。在hbm2java选项下,您可以指定ejb3 = true使您的POJO生成EJB3(JPA?)注释。我的问题是这些注释是否是JPA注释?或者更一般地说,JPA注释、Hibernate注释和EJB3注释之间有什么区别?它们本质上都是相同的吗?
1个回答

5

JPA(Java Persistence API)注释声明了 Java 类应如何持久化到数据库。Hibernate 注释是 JPA 的一个实现,加上一些特定于 Hibernate 框架的额外注释。EJB(Enterprise Java Beans)注释与 JPA 分开,用于描述 EJB 框架内更一般的业务逻辑方面(事务、并发、安全性等)。


当使用ejb3=true选项时,工具中的hbm2java选项会生成什么具体内容?生成的注释看起来像是Hibernate/JPA注释,并且导入的内容都是javax.persistence.*吗? - Tom
1
更正:Hibernate注释只是Hibernate特定的注释;它们不是JPA的实现。JPA注释全部在javax.persistence中。如果您想符合标准并独立于实现(也就是一件好事),那么请使用JPA注释,就这么简单。 - DataNucleus
如果你说的“Hibernate注解”是指“org.hibernate.annotations.*”,那么DataNucleus是正确的选择。我理解为这些注解可以用来与Hibernate系统进行交互。Hibernate本身提供了JPA的实现。 - OrangeDog
@OrangeDog,是的,这些是针对名为“Hibernate Annotations”的项目的。显然,JPA的那些都由persistence-api.jar提供。 - DataNucleus
1
@DataNucleus 好的,昨晚我也做了一些研究,基本上发现了同样的事情。我想我在我的 OP 中没有表达清楚,但我特别是在谈论 JPA 注释(而不是 Hibernate 框架注释)。JBoss Tools 有一个选项,可以在从模式反向工程 POJO 时为您创建这些注释。该选项是 hbm2java 任务中的 ejb3,显然是指 JPA 规范是 EJB3 规范的一部分。 - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接