当前位置: 首页 > 面试题库 >

Java JPA和Hibernate有什么区别?

万俟心思
2023-03-14
问题内容

我知道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采用问题/解决方法?


问题答案:

正如您所说的,JPA只是一个规范,意味着没有实现。您可以根据需要使用JPA批注对类进行批注,但是如果没有实现,则什么也不会发生。可以将JPA视为必须遵循的准则或接口,而Hibernate的JPA实现是符合JPA规范定义的API并提供底层功能的代码。

当将Hibernate与JPA一起使用时,实际上是在使用Hibernate JPA实现。这样做的好处是您可以将Hibernate的JPA实现换成JPA规范的另一种实现。当您使用直接的Hibernate时,由于其他ORM可能使用不同的方法/配置和注释,因此您将锁定在实现中,因此您不能仅切换到另一个ORM。



 类似资料:
  • 问题内容: Hibernate和Spring Data JPA之间的主要区别是什么?什么时候不应该使用Hibernate或Spring Data JPA?另外,Spring JDBC模板何时可以比Hibernate / Spring Data JPA更好地执行? 问题答案: Hibernate是一个JPA实现,而Spring Data JPA是一个JPA数据访问抽象。没有JPA提供程序,Sprin

  • 问题内容: 通过文档,我只能找到一个不同之处,即save方法生成将对象作为生成的标识符返回,但persist不是。这是提供persist方法的唯一目的。如果是的话,即使他不打算这样做对程序员也有帮助要使用生成的标识符,他可以使用save并忽略返回值。 也来通过这个线程有什么优势依然存在(中)与保存()在Hibernate中?。我可以从此线程获取的有意义的语句是 persist(),还可以保证,如果

  • Hibernate和Spring数据JPA之间的主要区别是什么? 我们什么时候不应该使用Hibernate或Spring数据JPA? 此外,何时SpringJDBC模板可以比Hibernate和SpringDataJPA性能更好?

  • 问题内容: 请问之间有什么区别? 弹簧 支柱 支柱2 冬眠 JavaServer Faces JavaServer页面 挂毯 这些技术/框架是否相互补充?或者它们是彼此的替代品(在我使用其中一种之后,就不需要使用另一种了)? 谢谢。 问题答案: Spring是一个 IoC容器 (至少是Spring的核心),用于通过依赖项注入来连接事物。Spring提供了其他服务,例如事务管理和各种其他技术的无缝集

  • 问题内容: 为什么要同时使用?两者都使用还是一个就足够了? 问题答案: 如果您根本不想审核值/关系,请在字段上使用NotAudited。我相信您可以在具有或没有诸如OneToMany,ManyToMany或Column之类的关系的字段上使用它。如果要审核值,请在关系字段上使用RelationTargetAuditMode.NOT_AUDITED,而不要审核关系另一侧的实体。例如,您要审核ID /键

  • 问题内容: 您能否解释以下两种交易类型之间的区别: Hibernate交易 Spring交易 我也想了解注释。 问题答案: 对于初学者来说,它们都是事务,但是它们包含不同的概念和组件。 TL; DR Hibernate处理数据库特定的事务,而spring提供常规的事务管理服务。是配置事务管理行为的好方法。 长话说: 交易次数 事务基本上是工作的单元(即,对某事物的更改),可以作为可提交或回滚的单个