2012-03-20 84 views
1

我剛剛開始使用Hibernate 4,並且我注意到它們是定義實體的兩種方法。通過定義一個xml文件hbm並將它與一個bean進行映射,或者只需定義一個bean並使用註釋與DB中的表進行映射(@Entity,@column ..等)。在休眠中定義實體4

我的問題是兩種方法有什麼區別? 很抱歉,如果這個問題很簡單,但我不能在網上找到我的答案..

感謝您的幫助

回答

3

使用你的模型(實體)結合Hibernate框架相當緊密的註解(你在他們之間引入耦合)。另一方面,由於您不必在XML和Java源文件之間切換,因此您的源代碼變得更加可讀。

最初Hibernate僅支持XML映射,後面添加了註釋(在Java 5中引入它們之後)。大多數Java開發人員都非常青睞註釋,因爲他們確實很明顯地表明一個類表示一個Hibernate實體,它具有什麼約束以及它如何與應用程序中的其他實體相關聯。另一方面,使用XML定義將您的源代碼從Hibernate中分離出來,並且您可以輕鬆切換到另一個庫,而無需修改Java源代碼。不過,使用Java Persistence API以及它的便攜式註釋會讓你做得更好。它賦予使用可以委託給任何ORM框架(Hibernate,ibatis,EclipseLink等)的統一ORM API的能力。在JPA的配置中更改聯機並將新的ORM添加到您的項目類路徑中可輕鬆切換框架。在實踐中,很少有公司直接使用Hibernate(除非他們需要一些獨特的功能) - 它通常與JPA結合使用。很少有人使用XML實體定義 - 我在很長一段時間裏還沒有和他們一起開發過一個項目。

1

最大的區別是你如何處理Hibernate。有些人可能更喜歡XML配置而不是註釋,反之亦然。

使用XML配置可以更好地控制Hibernate,並讓您可以將配置文件保存在一個地方。

另一方面,JPA Annotations允許更直觀的持久性配置,同時保持您的業務邏輯免於供應商鎖定。您可能還想檢查this thread