JPA 和 Hibernate 有什么区别?

我知道 JPA 2 是一个规范,而 Hibernate 是 ORM 的工具。另外,我了解到 Hibernate 具有比 JPA 2 更多的功能。但是从实际的角度来看,真正的区别是什么?

我有使用 iBatis 的经验,现在我想学习 Hibernate 或 JPA2。我拿起 Pro JPA2 书籍,并且一直指 “JPA 提供者”。例如:

如果您认为某个功能应该被标准化,则应该大声疾呼并向您的 JPA 提供者提出要求

这使我感到困惑,所以我有几个问题:

  • 我可以仅使用 JPA2 注释 POJO 即可从数据库获取数据
  • 是否应该将 JPA2 与 “JPA Provider”(例如 TopLink 或 Hibernate)一起使用?如果是这样,那么与单独使用 JPA2 或单独使用 Hibernate 相比,使用 JPA2 + Hibernate 有什么好处?
  • 您能推荐一本实用的 JPA2 书籍吗? “Pro JPA2” 似乎更像是一本关于 JPA2 的圣经和参考书目(直到本书的后半部分才进入 Queries)。是否有一本书针对 JPA2 采用问题 / 解决方法?

答案