Hibernate网站说有一个原生的Hibernate API以及一个JPA的实现.Native API和JPA实现之间有什么区别?优点缺点?
我正在使用Spring MVC应用程序,使用Tomcat作为容器,使用MySQL进行持久化.我过去分别使用Doctrine和Entity for PHP和.NET,使用代码优先方法.我想有类似Java的东西.我是Spring的新手,从未使用过Hibernate.我的团队想使用ORM,而Hibernate似乎是最受欢迎的.我们不确定Hibernate将如何锻炼,或者我们是否应该使用原生或JPA api.该应用程序将是数据驱动,数据输入,报告等.
我已经读过,使用JPA可以更容易地切换到另一个JPA实现,虽然我不知道是否需要它.
JPA是通过面向对象的API访问关系数据库的标准.Hibernate是此API的一个实现.当你想使用JPA时,你需要一些供应商来实现它,Hibernate是一个不错的选择,但还有其他像EclipseLink.
Hibernate的存在时间比JPA长.原生的旧API(JPA的模型)仍然存在,有时它提供的可能性比通过JPA暴露的更多(例如孤儿删除).如果您需要那些,您需要使用本机API.使用JPA有其他优点,最重要的(在我看来)更多的开发人员知道它.而你仍然可以通过配置使用一些Hibernate细节.
一般而言,IMO支付使用标准API(此处为JPA),并对要使用的实现做出经验丰富的决定.
大多数本地使用Hibernate的教程都很老 - 就像Hibernate 3一样,这是一个JPA之前的版本.虽然有充分的理由使用它,但它们(IMO)通常不适用于普通观众.所以如果你刚刚开始在这个领域学习,我建议从JPA开始.
关于异地资源的建议:有充分的理由,这里不是主题.但是目前官方的Hibernate文档将是一个良好的开端,就像寻找至少Hibernate 4的动态一样.