2013-04-17 87 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切換到另一個。