到目前为止,我一直更喜欢直接使用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。
你怎么看?我无法使用JPA 2.0完成的Hibernate 3.5中还剩下什么?
即使对于JPA 1.0,我也会推荐一种不同的方法:“在可能的地方使用JPA,在必须的地方使用Hibernate”。
JPA 2.0非常丰富,我认为它是一项巨大的改进,现在使用标准化扩展所需要的许多东西已经标准化了)。
但你仍然可能需要在某些情况下,一些hibernate特定的扩展:自定义UserType,非标发生器,通过例如,查询@Formula,@Index等有看第2.4节“Hibernate的注解扩展”更多的“例子”。
UserType
@Formula
@Index
但是让我坚持,我建议您在可能的地方使用JPA,在必须的地方使用Hibernate(后面的部分将随着JPA 2.0的使用而变得更薄)。