<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    紙飛機

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      22 隨筆 :: 28 文章 :: 30 評論 :: 0 Trackbacks
     原貼網址: http://www.jdon.com/jivejdon/thread/22244.html

    (一)對象之間的關系:
    1. 依賴:
    依賴對象通過調用被依賴對象的方法來獲得服務。一種比較松散的關系,并且是短期的。我們的過程與對象往往依賴與我們的實體域對象。如在struts 的 action中調用模型層的方法。
    2. 關聯
    它使一個類指到另一個類的屬性。長期的
    3. 聚合
    聚合關系是關聯關系的一種,是強的關聯關系。聚合是整體和部分之間的關系。
    4. 組合
    也叫合成關系,組成關系是關聯關系的一種,是比聚合關系強的關系。對象負責代表部分的對象的生命周期。
    注:既然聚合,組合關系屬于關聯關系,那么如何區分一般關聯關系,聚合關系和組合關系呢?
    一般關聯:只要一個對象聯系到另外一個對象就形成了關聯關系。如:人和他的貓,黑豹樂隊和竇魏,pc機和顯示器。
    聚合關系:一種強關聯關系,它要求有部分和整體的關系,并且沒有了整體部分也可以獨立存在。在上面三個例子中人和它的貓顯然沒有部分和整體的關系,所以只能是一般的關聯關系。而黑豹樂隊和竇魏,竇魏等人組成了黑豹樂隊即:竇魏和黑豹是整體和部分的關系。而
    竇魏脫離了黑豹(早就離開了)更或者黑豹不存在了那么竇魏仍然可以以音樂人的身份存在(即對象仍然可以獨立存在)所以它屬于聚合關系。組成關系是可以共享的。(竇魏也可以加入其他樂隊)。
    組合關系:一種更強的整體和部分的關系。它并且要求代表整體的對象負責代表部分的對象的生命周期,組成關系是不能共享的。如:pc機和顯示器的關系。
    我覺得:如果兩個實體是整體和部分的關系,那么它們到底是聚合還是組合,這取決于你的需求。比如說:pc機和顯示器的關系,如果你的系統中,顯示器脫離了 pc機就不存在意義了,也可以說:所有顯示器的訪問都是通過pc機進行的,那么你可以把關系設定為組合(如你在為一個只買品牌機的代理商作系統你可能是可以這么作的)。如果你的顯示器脫離的pc機仍然可以獨立存在,也就是說在系統中可以直接訪問顯示器對象,那么你可以將關系設為聚合(如你在為一個買散件的代理商作系統你可能是可以這么作的)
    5. 繼承
    這個我不想多講了,用過面向對象的語言都應該知道。
    (二)關系數據庫的關系
    一對一
    一對多
    多對一
    多對多
    (三)o/r mapping策略
    1.繼承:
    對于繼承關系一般有三種策略:
    策略1繼承樹的每個類對應一個表<joined-subclass >
    共享主鍵
    策略2繼承樹的根類對應一個表<discriminator ><subclass >
    需要添加一個識別字段
    策略3繼承樹的葉子類對應一個表
    不支持多態查詢
    2.關聯
    2.1一對一
    一半有兩種策略:
    策略1:唯一的外鍵
    <many-to-one>+unique=”true” (唯一的外鍵)
    <one-to-one>
    策略2:共享主鍵
    <one-to-one>
    <one-to-one><constrained=”true”> (既是主鍵又是外鍵)
    注意:生成方式需要用:foreign
    2.2一對多(無需多說)
    2.3多對一(無需多說)
    2.4多對多
    策略1:A,B表多對多的關系需要引入C表。
    C表中的所有屬性即為主鍵又為外鍵分別參照A,B兩表。
    C表中不可以有其他屬性
    策略2:將多對多拆分成兩個一對多:
    A,B對象多對多的關系需要引入C對象。使得A,B兩對象與C對象的關系為一對多。對應數據庫中:A,B表多對多的關系需要引入C表。A,B兩表與C表的關系為一對多。
    C表又自己的主鍵
    C表中又非主鍵的外鍵分別參照A,B兩表。
    C表中不可以有其他屬性
    如;學生 ,課程為多對多的關系 那么引入學生選課。
    注意:策略1和策略2的不同在于:策略2引入了新的對象而策略1沒有。這是因為這樣:策略1的c表不能又自己的東西。而策略2有。
    2.5其他
    上面說過:聚合與組成是關聯的一種所以他們也符合以上策略。
    特別的:當用到組合關系的是否我們可用用到hibernate的“組件”<component>.由于“組件”它完全可以滿足組成關系的強關聯。
    3.依賴
    一般不在實體域對象中體現。

    Re: 我的O/R MAPPING (HIBERNATE)方法小結 發表: 2005年08月23日 09:16 回復
    jane830527 發表文章: 1/ 注冊時間: 2005年08月23日 09:14
    好!

     

    Re: 我的O/R MAPPING (HIBERNATE)方法小結 發表: 2005年08月23日 09:33 回復
    kkkk 發表文章: 3/ 注冊時間: 2003年04月22日 13:50
    支持

     

    O/R MAPPING (HIBERNATE)方法小結 (補充內容): 發表: 2005年08月23日 09:54 回復
    xyz 發表文章: 38/ 注冊時間: 2005年08月22日 20:17
    另外我看到了一種”鍵關聯”的方法,感覺很有道理。我理解了一下總結如下:
    1. 一般關聯:
    這種方法對于一般的關聯總是引入c表(另外的一張表)僅僅表示關系。
    C表的主鍵有分別指向A,B兩表(外鍵)。當指向一方的外鍵unique=”true”即唯一,那么這一方為“一”,反之為“多”的一方。這樣就可以形成一般的關聯關系。但是注意的是:c表不映射為對象。C表也沒有自己的屬性。
    2. 聚合和組成
    當實體A的非主鍵列中有一個引自實體B的時候,這種關系是B聚合A。如果這種引用是強制性的,則是合成關系,否則為聚合關系。是否為強制性,只需要將引用列設為非空即可;
    3. 繼承
    當實體A的主鍵引用自實體B的時候(即為外鍵),那么A繼承 B。
    總結:我覺得O/RM的方法有很多,我們可以看到“按外鍵“的方法思路很清晰。但是它在解決一般的關聯的時候總是引入另外一張表這樣勢必影響效率。另外,既然聚合和組合是關聯的一種那么即使是組合關系我也把它看成一般關聯,也不算錯的。關系數據庫一開始就不是為了面向對象的語言服務的,所以我們在這里映射無論那種方法似乎都不能說是完全的,正確無誤完成了O/RM。
    所以我覺得一切都要看我們的項目需求。因地制宜!

     

    Re: 我的O/R MAPPING (HIBERNATE)方法小結 發表: 2005年08月24日 10:50 回復
    robert8292 發表文章: 1/ 注冊時間: 2005年08月24日 10:47
    “策略2:共享主鍵”關于這個問題昨天剛被問到,憑著項目中的記憶,勉強答對了,汗。

     

    Re: 我的O/R MAPPING (HIBERNATE)方法小結 發表: 2005年08月31日 14:07 回復
    xxaxxx 發表文章: 1/ 注冊時間: 2005年08月31日 14:05
    水平不錯!

     

    Re: 我的O/R MAPPING (HIBERNATE)方法小結 發表: 2006年01月02日 21:38 回復
    banq 發表文章: 8377/ 注冊時間: 2002年08月03日 17:08
    該文章好就好在它從設計角度來看待hibernate,對象關系和數據庫之間的存在阻抗,如何通過hibernate配置設置,該文從這個角度描述。

    如果你看懂本文,并且覺得很好,說明你已經掌握了使用Hibernate的真諦。

    如果你不以為然,或者沒看懂,雖然你也在用Hibernate,說明你只是將hiberante作為數據庫傀儡,請盡快轉變你的思路到域模型驅動分析設計上來。

     

    Re: 我的O/R MAPPING (HIBERNATE)方法小結 發表: 2006年01月02日 21:40 回復
    banq 發表文章: 8377/ 注冊時間: 2002年08月03日 17:08
    從另外一個方面說:使用hibernate需要相當的設計功底,而非傳統的數據庫功底,如果你沒有這個功底,會誤用hibernate,反而是一種損害。

    http://www.jdon.com/jive/article.jsp?forum=91&thread=24451
    posted on 2007-10-28 12:36 紙飛機 閱讀(237) 評論(0)  編輯  收藏 所屬分類: Hibernate

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲成AV人片久久| 国产亚洲色视频在线| 国产一精品一AV一免费孕妇| 成年人免费网站在线观看| 日韩亚洲国产二区| 亚洲AV永久无码精品| 亚洲av无码国产综合专区| 美女免费视频一区二区| 波多野结衣免费一区视频| 欧美日韩国产免费一区二区三区| 亚洲一区二区三区高清| 亚洲另类无码专区首页| 国产中文字幕在线免费观看| 日本免费一区二区三区最新vr| 亚洲丁香色婷婷综合欲色啪| 看Aⅴ免费毛片手机播放| 最近中文字幕mv免费高清在线 | 三年片免费观看大全国语| 曰批全过程免费视频在线观看| 亚洲综合色自拍一区| 亚洲av永久无码| 麻豆一区二区免费播放网站| 亚洲综合无码AV一区二区 | 亚洲国产综合AV在线观看| 国产成人无码区免费网站| 亚洲狠狠久久综合一区77777| 免费国产va在线观看| 免费观看的av毛片的网站| 亚洲一区二区三区首页| 台湾一级毛片永久免费| 亚洲人成电影网站免费| 亚洲精品国自产拍在线观看| 亚洲精品无码高潮喷水A片软| 国产一区二区三区在线免费| 亚洲欧美成人av在线观看| 亚洲精品黄色视频在线观看免费资源 | 无遮免费网站在线入口| 国产精品亚洲а∨无码播放麻豆| 亚洲日韩精品一区二区三区无码| 在线播放国产不卡免费视频| 亚洲成a人片在线观看久|