Hibernate网站说有一个原生Hibernate API以及一个JPA的实现。本机API和JPA实现之间有什么区别?优势还是劣势?
我正在开发Spring应用程序,使用Tomcat作为容器,使用MySQL实现持久性。我在过去分别使用过针对PHP和.NET的Doctrine和Entity,使用的是代码优先方法。我想要一些类似于Java的东西。我是Spring的新成员,从未使用过Hibernate。我的团队希望使用ORM,Hibernate似乎是最流行的。我们不确定Hibernate将如何锻炼,也不确定是否应该使用本机或JPA。应用程序将由数据驱动、数据输入、报告等。
我读过使用JPA可以更容易地切换到另一个JPA实现,尽管我不知道是否需要它。
发布于 2013-12-29 00:45:35
JPA是通过面向对象的API访问关系数据库的标准。Hibernate是这个API的一个实现。当您想要使用JPA时,您需要一些供应商来实现它,Hibernate是一个不错的选择,但也有其他类似于EclipseLink的选择。
Hibernate存在的时间比JPA长。本机的、旧的API (它是JPA的模型)仍然存在,有时它提供了比通过JPA公开的更多的可能性(例如孤儿清除)。如果您需要这些API,则需要使用本机API。使用JPA还有其他优点,最重要的是(在我看来)更多了解JPA的开发人员。您仍然可以通过配置使用一些Hibernate的细节。
一般来说,使用标准API (这里是JPA )并对要使用的实现做有经验的决定是值得的。
大多数本机使用Hibernate的教程都很老--正如Hibernate 3一样,它是一个预JPA版本。虽然有充分的理由使用它,但它们(IMO)通常不适用于一般受众。因此,如果你刚刚开始在这个领域学习,我建议从JPA开始。
至于关于场外资源的建议:出于很好的理由,它们不在这里讨论。但是,当前的官方Hibernate文档将是一个好的开始,因为至少要为Hibernate 4寻找当前的文档。
https://stackoverflow.com/questions/20820880
复制相似问题