JPA 2 和 Hibernate 之间有什么关系?

What are the relationship between JPA 2 and Hibernate?

我是 Java ORM 世界的新手,我对 JPA 2Hibernate 之间的关系和差异有一些疑问.

阅读文档在我看来 JPA2 是一个 规范 Hibernate 是此规范的特定 实现 。是真的吗? JPA 2 是规范的确切含义是什么?什么是规范?我认为它提供了一些接口(或类似的东西),其中定义了对数据库执行操作(例如:插入、删除、选择、更新操作等)所需的常见行为。

所以我认为 JPA2 提供了一个常见操作列表和未实现的执行方法以及一个 ORM 框架,如 Hibernate实施它。

这是真的还是我遗漏了什么?所以这意味着我不能在某种独立版本中使用 JPA 2 因为它没有实现但同时我可以使用 Hibernate 作为独立工具(whitout 使用 JPA) ?

所以在我看来,我可以独立使用 Hibernate,也可以绑定到 JPA 2?

所以这意味着我可以使用 JPA 2 注释我的 class 但如果我不使用它的实现之一,什么也不会发生?

使用绑定到 JPA 2Hibernate 到底有什么好处。我认为这与标准化以及换出 Hibernate 并使用另一个实现替换它而不更改我的代码的可能性有关。但是在独立版本中使用 Hibernate 和绑定到 JPA 2 的主要区别是什么?与使用 Hibernate 独立版本相比,JPA 2 为我提供了更多功能或限制了我的尊重?我的功能少了吗?

Tnx

简单来说——JPA是一个接口,而Hibernate是它的实现。所以最好的方法是使用 JPA 2 注释 - 在这种情况下,规则 针对接口的代码,而不是实现 适用。