区别Hibernate 3.5/JPA 2.0

jpl*_*ain 12 hibernate jpa eclipselink java-ee-6 jpa-2.0

到目前为止,我总是喜欢直接使用Hibernate而不是JPA 1.0,因为JPA缺少我需要的一些重要功能和Hibernate提供的:Criteria API,二级缓存,单向OneToMany和其他一些.

现在,随着JPA 2.0的出现以及JPA 1.0(http://en.wikibooks.org/wiki/Java_Persistence/What_is_new_in_JPA_2.0%3F)中最初缺少的所有新功能,我想知道是否仍然需要直接使用Hibernate.

你怎么看?在Hibernate 3.5中我还没有用JPA 2.0做什么?

Pas*_*ent 14

现在,随着JPA 2.0的出现以及JPA 1.0(http://en.wikibooks.org/wiki/Java_Persistence/What_is_new_in_JPA_2.0%3F)中最初缺少的所有新功能,我想知道是否仍然需要直接使用Hibernate.

即使对于JPA 1.0,我也会推荐一种不同的方法:"JPA,你可以,Hibernate你必须在哪里".

你怎么看?在Hibernate 3.5中我还没有用JPA 2.0做什么?

JPA 2.0非常丰富,我认为它是一个巨大的改进,许多需要使用专有扩展的东西现在已经标准化了(参见前面的答案).

但你仍然可能需要在某些情况下,一些休眠特定的扩展:自定义UserType,非标发生器,通过例如查询@Formula,@Index等有看第2.4节"Hibernate的注解扩展"更多的"例子".

但是让我坚持,我建议你尽可能使用JPA,Hibernate你必须在哪里(后面的部分用JPA 2.0获得).


Dou*_*rke 6

EclipseLink项目中,我们一直专注于用户可以尽可能坚持JPA的策略,我们一直致力于通过扩展轻松提供许多高级功能,以便您可以最大限度地减少对原生API的使用.显然,作为JPA参考实现,我们需要兼容,但JPA提供了几个扩展点,我们使用包括查询提示和持久性单元属性.某些功能是通过EclipseLink JPA特定注释和/或eclipselink-orm.xml以及API启用的,但正如JPA 2.0所述,许多功能都可以通过标准配置来处理.

最终的好处是,通过尽可能地保持标准,您可以利用共同的知识库以及工具和集成.高级ORM功能也非常重要,但只有在高级情况下才需要,并且应尽可能以最小的耦合使用.

道格