0

我对这两个注释 API 感到困惑。我用谷歌搜索并了解 JPA 是接口,而 Hibernate 注释是实现。是对的吗?

但是我应该在我的项目中使用哪一个?哪个更好,为什么?

4

2 回答 2

6

我会选择 JPA,因为您可以随时通过更改一行轻松更改实现(即 JPA 供应商)。Hibernate 和 OpenJPA 等其他供应商,Toplink 提供 JPA 标准的实现。
关于注解,JPA 和 Hibernate 都提供了对javax.persistence注解的支持。

JPA 与休眠

a) JPA 是您的代码应该使用的 Persistence Api。

b) JPA Api 会将调用传递给实际的持久性提供者(例如:Hibernate/TopLink)以完成实际工作。

c)如果您从性能方面来看,它将取决于实际的持久性提供程序(Hibernate/TopLink),而不是 JPA 作为它的包装层。

d) 如果您从代码依赖方面来看,JPA 更有意义,因为您的代码依赖于标准 Java Api。

e) 如果您使用过 Hibernate,那么您会发现 JPA 中缺少某些功能,例如条件查询等。这并不意味着您不能在应用程序中编写条件查询,您需要从 JPA 实体管理器获取 Session 对象和现在你和hibernate项目一样好。

但是现在您的代码依赖于特定的 impl (Hibernate),接下来您可以看到 JPA (2.0) 中添加了更多内容

f) 你是否应该使用 JPA:我认为你应该使用,API 是干净的,虽然你需要的东西不是它们,但这是向前迈出的一大步。

来源链接

于 2012-09-10T12:04:38.023 回答
2

基本上,Hibernate 实现了 JPA 规范,并在规范之上添加了更多特性。因此,特定于 Hiberate 的注释是那些添加的功能。因此,您使用 JPA 注释,直到遇到强制您使用 Hibernate 特定功能的映射,然后您需要使用它们的注释来获取这些功能。

于 2012-09-10T12:06:53.870 回答