天天看點

Hibernate 實體關聯關系映射----總結

Hibernate 實體關聯關系映射----總結

花了三天的業餘時間,終于寫完了Hibernate關聯關系映射的所有執行個體,感覺還應該總結一下。

Hibernate映射關系錯綜複雜,在實際中真的都能用到嗎?不用行嗎?

在我看來,Hibernate提供這些映射關系,常用就是一對一和多對一,并且在能不用連接配接表的時候盡量不要用連接配接表。多對多會用到,如果用到了,應該首先考慮底層資料庫設計是否合理。

在實際開發中,在Hibernate關聯關系之外常常還有另外一種選擇方案,表各自作為單表映射,業務邏輯控制外鍵關系(有時候就是一個相關聯的列,但不一定要加外鍵限制),這樣更加靈活,并且資料的完整性同樣有保證。

當然,“單表映射,業務控制外鍵關系”并不是說Hibernate的實體關聯功能是多餘的,Hibernate的實體關聯的優點很多,随便拿本書都是講優點,用好了會讓開發人員感覺更友善,現在我也是兩種方案結合使用。比如對于不很确定的兩個實體,常常選用單表關聯。

以前在初學Hibernate還沒有完全搞清楚這些關聯關系的時候,就是用單表映射,業務控制外鍵關系做的,發現沒有任何問題,程式同樣運作得很好。

看了這些是不是後悔浪費時間學習映射關系了?呵呵,Hibernate的OR Mapping是Hibernate的靈魂,我相信Hibernate的創始人比我們一般人的了解更深刻。隻有學會了這些才能體會Hibernate設計者的思想。學一個東西,不光自己寫代碼,還應該能看懂别人的代碼才行。是以系統學習這些關聯映射還是大有必要的。

以上都是我自己的觀點。歡迎在此交流讨論。

Hibernate在實際項目開發中,hbm.xml包括資料庫腳本都是通過Xdoclet生成的,在此不采用Xdoclet的目的是為了便于了解這些映射模型。實體-資料表-映射檔案 三者對比看,太直覺了。

瞌睡了,暫時先寫到此,有新思路了再補上。。。。

-----------------------------------------------------

回Hibernate:Hibernate關聯關系映射執行個體速查

Hibernate關聯關系映射目錄

├─單向關聯

│  ├─  一對一外鍵單向關聯

│  ├─  一對一主鍵單向關聯

│  ├─  一對一連接配接表單向關聯

│  ├─  一對多外鍵單向關聯

│  ├─  一對多連接配接表單向關聯

│  ├─  多對一外鍵單向關聯

│  ├─  多對一連接配接表單向關聯

│  └─  多對多單向關聯

└─雙向關聯

    ├─  一對一外鍵雙向關聯

    ├─  一對一主鍵雙向關聯

    ├─  一對一連接配接表雙向關聯

    ├─  一對多外鍵雙向關聯

    ├─  一對多連接配接表雙向關聯

    └─  多對多雙向關聯