Hibernate Native vs Hibernate JPA

2022-09-03 05:00:08

Hibernate网站表示,有一个原生的Hibernate API以及JPA的实现。原生 API 和 JPA 实现有什么区别?优点,缺点?

我正在开发一个Spring MVC应用程序,使用Tomcat作为容器,使用MySQL进行持久性。我过去曾分别在 PHP 和 .NET 中使用 Doctrine 和 Entity,使用代码优先的方法。我希望与Java有类似的东西。我是春天的新手,从来没有使用过Hibernate。我的团队想使用ORM,而Hibernate似乎是最受欢迎的。我们不确定Hibernate将如何锻炼,或者我们是否应该使用原生或JPA api。该应用程序将是数据驱动的,数据输入,报告等。

我已经读到使用JPA可以更容易地切换到另一个JPA实现,尽管我不知道是否需要这样做。


答案 1

JPA 是通过面向对象的 API 访问关系数据库的标准。Hibernate是这个API的实现。当你想使用JPA时,你需要一些供应商来实现它,Hibernate是一个不错的选择,但还有其他像EclipseLink这样的选择。

休眠比 JPA 存在的时间更长。原生的、较旧的API(它是JPA的模型)仍然存在,有时它提供了比通过JPA(例如孤儿删除)公开的更多的可能性。如果您需要这些,则需要使用本机API。使用JPA还有其他优点,最重要的是(在我看来)更多的开发人员知道它。您仍然可以通过配置使用一些休眠细节。

一般来说,IMO使用标准API是值得的,在这里JPA,并就要使用的实现做出有经验的决定。

大多数原生使用Hibernate的教程都非常古老 - Hibernate 3也是如此,这是一个JPA之前的版本。虽然有充分的理由使用它,但它们(IMO)通常不适用于普通受众。因此,如果您刚刚开始学习该领域,我建议您从JPA开始。

至于关于异地资源的建议:有充分的理由,它们在这里不是主题。但目前的官方Hibernate文档将是一个良好的开端,就像寻找至少Hibernate 4的toturial一样。


答案 2

推荐