2013-04-17 90 views
4

我在我们的项目中使用Hibernate,并在Hibernate Domain Pojo Objects的基于注释的配置中使用Hibernate。注解基于配置我们使用javax.persistence.* 使用休眠或JPA注释

  • 使用Hibernate的原生注解org.hibernate.annotations.*
  • 目前我们使用JPA基于注解的配置为我们的POJO文件,例如SessionFactory Hibernate的原生API两个选项

    基于
    1. JPA注解,会话等打开会话并执行数据库操作。

      需要你在下面的东西帮助,

      1. 是否有任何问题都混合JPA注释和使用Hibernate 原生API?
      2. link解释这样一个问题 (级联JPA的休眠的注释,共错误)
      3. 请提供你的专业知识,这类型标注的使用
        1. JPA
        2. 休眠本地
        3. 混合他们两个?

    回答

    6

    Hibernate提供的JPA实现之一。如果您在代码中使用纯粹的JPA,那么如果出现需求,您可以自由地更改为不同的实现。例如,EclipseLink/TopLinkOpenJPA是不同客户可能需要的实现。完整的实现列表是here

    如果您不得不使用hibernate提供的任何不属于JPA规范的奇特功能,您应该在您的代码库中使用hibernate特定的API。冬眠论坛here的相关讨论。

    2

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

    根据我的经验,混合和匹配加上两个点将是有益的,因为你不需要从一个ORM切换到另一个。