要使用的Hibernate或JPA注释

问题描述 投票:5回答:2

我在Hibernate Domain Pojo Objects的项目和基于注释的配置中使用Hibernate。对于基于注释的配置,我们有两个选项

  1. 使用javax.persistence.*的基于JPA的注释
  2. 使用Hibernate Native Annotations org.hibernate.annotations.*

目前,我们为POJO文件和Hibernate本机API(如SessionFactory,Session等)使用基于JPA的注释配置来打开会话并执行数据库操作。

我有这些问题:

  1. 混合JPA注释和使用Hibernate本机API有什么问题吗?
  2. 这个link解释了一个这样的问题(cascade-jpa-hibernate-annotation-common-wrong)
  3. 请提供您的专业知识,使用哪种注释 JPA Hibernate原生 混合他们两个?
java hibernate jpa
2个回答
6
投票

Hibernate提供了一个JPA实现。如果您在代码中使用纯粹的JPA,则可以在需要时自由更改为其他实现。例如,EclipseLink/TopLinkOpenJPA是不同客户可能需要的实现。完整的实现列表是here

如果您被迫使用hibernate提供的任何不在JPA规范中的异乎寻常的功能,您应该在代码库中使用特定于hibernate的API。来自hibernate论坛here的相关讨论。


2
投票

我们混合了其中一些注释,因为当时我们正在使用hibernate的版本,当时JPA规范上没有一些功能。例如,要将一个布尔值存储为数据库中的“Y”或“N”,您可以使用休眠类型。但当时JPA规范没有提供此类功能。我现在不知道现状。同样对于孤儿删除也是那些日子JPA没有这个功能,但现在我相信他们在你的级联选项上提供了一个名为orphanRemoval的属性。此外,您还拥有某些功能,例如@BatchSize,以提高相关行李的抓取性能。我不知道JPA规范上是否有这样的功能。

根据我的经验,混合和匹配以及两者的加分都是有益的,因为您无需从一个ORM切换到另一个ORM。

© www.soinside.com 2019 - 2024. All rights reserved.