Hibernate 實體關聯關係對映—-總結
 
花了三天的業餘時間,終於寫完了Hibernate關聯關係對映的所有例項,感覺還應該總結一下。
 
Hibernate對映關係錯綜複雜,在實際中真的都能用到嗎?不用行嗎?
 
在我看來,Hibernate提供這些對映關係,常用就是一對一和多對一,並且在能不用連線表的時候儘量不要用連線表。多對多會用到,如果用到了,應該首先考慮底層資料庫設計是否合理。
 
在實際開發中,在Hibernate關聯關係之外常常還有另外一種選擇方案,表各自作為單表對映,業務邏輯控制外來鍵關係(有時候就是一個相關聯的列,但不一定要加外來鍵約束),這樣更加靈活,並且資料的完整性同樣有保證。
 
當然,“單表對映,業務控制外來鍵關係”並不是說Hibernate的實體關聯功能是多餘的,Hibernate的實體關聯的優點很多,隨便拿本書都是講優點,用好了會讓開發人員感覺更方便,現在我也是兩種方案結合使用。比如對於不很確定的兩個實體,常常選用單表關聯。
 
以前在初學Hibernate還沒有完全搞清楚這些關聯關係的時候,就是用單表對映,業務控制外來鍵關係做的,發現沒有任何問題,程式同樣執行得很好。
 
看了這些是不是後悔浪費時間學習對映關係了?呵呵,Hibernate的OR Mapping是Hibernate的靈魂,我相信Hibernate的創始人比我們一般人的理解更深刻。只有學會了這些才能體會Hibernate設計者的思想。學一個東西,不光自己寫程式碼,還應該能看懂別人的程式碼才行。因此係統學習這些關聯對映還是大有必要的。
 
以上都是我自己的觀點。歡迎在此交流討論。
 
Hibernate在實際專案開發中,hbm.xml包括資料庫指令碼都是通過Xdoclet生成的,在此不採用Xdoclet的目的是為了便於理解這些對映模型。實體-資料表-對映檔案 三者對比看,太直觀了。
 
瞌睡了,暫時先寫到此,有新思路了再補上。。。。
 
—————————————————–
 
Hibernate關聯關係對映目錄

├─單向關聯
│  ├─  一對一外來鍵單向關聯
│  ├─  一對一主鍵單向關聯
│  ├─  一對一連線表單向關聯
│  ├─  一對多外來鍵單向關聯
│  ├─  一對多連線表單向關聯
│  ├─  多對一外來鍵單向關聯
│  ├─  多對一連線表單向關聯
│  └─  多對多單向關聯
└─雙向關聯
    ├─  一對一外來鍵雙向關聯
    ├─  一對一主鍵雙向關聯
    ├─  一對一連線表雙向關聯
    ├─  一對多外來鍵雙向關聯
    ├─  一對多連線表雙向關聯
    └─  多對多雙向關聯