轉的O/R Mapping經驗

今天開始對項目的數據進行OR MAPPING,我根據使用HIBERNATE的經驗來做,到也不覺得很困難,現在對這部分總結一下.
    說到OR MAPPING,總體來說要根據OO的特性來做,即"封裝","繼承","多態".而"多態"實際上是個動態的概念,因此MAPPING工作的重點就是"封裝"和"繼承".而"封裝"中除了數據的封裝外,還有實體間關係的表示.具體來看,無非這麼幾種關係:
    一對一
    一對多(多對一)
    多對多
    這次系統數據結構的設計沒有用到繼承,所以僅僅針對封裝的這幾種關係來說.
   
    一對一
    RAILS使用一對"has_one"和"belongs_to"來描述這種關係,等同於hibernate裏的一對""和""
    一對多(多對一)
    這種關係也可以被稱爲雙象映射,但是這裏的雙方關係卻不是對稱的.RAILS使用一對"has_many"和"belongs_to"來表示,等同於hibernate裏面的和.
    多對多
    這種關係的表示得需要一箇中間表,hibernate的做法是程序員得指定告訴hibernate這個中間表是誰,而rails的做法是規定死了,這個中間表的名子是兩個關聯表名中間加個下劃線,並且,這兩個表名以字母順序排列,比如表A和表B有多對多關聯,則這個中間表必需爲A_B.實現上,是通過在雙方加上"has_and_belongs_to_many"來實現,比hibernate簡化了不少.不過,如果字母一樣怎麼辦?比如rights跟roles的關聯表.這個我還沒有試驗.

    總結來看,建立起靜態關聯關係是很容易的,不過這種關聯關係在訪問的時候具體如何來維護?有什麼規則?這還需要在寫業務代碼時再考慮了.
 
發佈了16 篇原創文章 · 獲贊 2 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章