麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

我的O/R MAPPING (HIBERNATE)方法小結

2019-11-17 06:32:44
字體:
來源:轉載
供稿:網友

(一)對象之間的關系:
1.依靠:
  依靠對象通過調用被依靠對象的方法來獲得服務。一種比較松散的關系,并且是短期的。我們的過程與對象往往依靠于我們的實體域對象。如在struts 的 action中調用模型層的方法。
2.關聯(lián)
  它使一個類指到另一個類的屬性。長期的
3.聚合
  聚合關系是關聯(lián)關系的一種,是強的關聯(lián)關系。聚合是整體和部分之間的關系。
4.組合
  也叫合成關系,組成關系是關聯(lián)關系的一種,是比聚合關系強的關系。對象負責代表部分的對象的生命周期。

  注:既然聚合,組合關系屬于關聯(lián)關系,那么如何區(qū)分一般關聯(lián)關系,聚合關系和組合關系呢?

  一般關聯(lián):只要一個對象聯(lián)系到另外一個對象就形成了關聯(lián)關系。如:人和他的貓,黑豹樂隊和竇魏,pc機和顯示器。
  聚合關系:一種強關聯(lián)關系,它要求有部分和整體的關系,并且沒有了整體部分也可以獨立存在。在上面三個例子中人和它的貓顯然沒有部分和整體的關系,所以只能是一般的關聯(lián)關系。而黑豹樂隊和竇魏,竇魏等人組成了黑豹樂隊即:竇魏和黑豹是整體和部分的關系。而竇魏脫離了黑豹(早就離開了)更或者黑豹不存在了那么竇魏仍然可以以音樂人的身份存在(即對象仍然可以獨立存在)所以它屬于聚合關系。組成關系是可以共享的。(竇魏也可以加入其他樂隊)。
  組合關系:一種更強的整體和部分的關系。它并且要求代表整體的對象負責代表部分的對象的生命周期,組成關系是不能共享的。如:pc機和顯示器的關系。

  我覺得:假如兩個實體是整體和部分的關系,那么它們到底是聚合還是組合,這取決于你的需求。比如說:pc機和顯示器的關系,假如你的系統(tǒng)中,顯示器脫離了pc機就不存在意義了,也可以說:所有顯示器的訪問都是通過pc機進行的,那么你可以把關系設定為組合(如你在為一個只買品牌機的代理商作系統(tǒng)你可能是可以這么作的)。假如你的顯示器脫離的pc機仍然可以獨立存在,也就是說在系統(tǒng)中可以直接訪問顯示器對象,那么你可以將關系設為聚合(如你在為一個買散件的代理商作系統(tǒng)你可能是可以這么作的)
5.繼續(xù)
  這個我不想多講了,用過面向對象的語言都應該知道。

(二)關系數據庫的關系
  一對一
  一對多
  多對一
  多對多
(三)o/r mapping策略
  1.繼續(xù):
  對于繼續(xù)關系一般有三種策略:
  策略1繼續(xù)樹的每個類對應一個表<joined-subclass >
   共享主鍵
  策略2繼續(xù)樹的根類對應一個表<discriminator ><subclass >
   需要添加一個識別字段
  策略3繼續(xù)樹的葉子類對應一個表
   不支持多態(tài)查詢
  2.關聯(lián)
  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 其他
  上面說過:聚合與組成是關聯(lián)的一種所以他們也符合以上策略。
  非凡的:當用到組合關系的是否我們可用用到hibernate的"組件"<component>.由于"組件"它完全可以滿足組成關系的強關聯(lián)。
  3.依靠
  一般不在實體域對象中體現。

  O/R MAPPING (HIBERNATE)方法小結 (補充內容):
  另外我看到了一種"鍵關聯(lián)"的方法,感覺很有道理。我理解了一下總結如下:
  1.一般關聯(lián):
  這種方法對于一般的關聯(lián)總是引入c表(另外的一張表)僅僅表示關系。
  C表的主鍵有分別指向A,B兩表(外鍵)。當指向一方的外鍵unique="true"即唯一,那么這一方為"一",反之為"多"的一方。這樣就可以形成一般的關聯(lián)關系。但是注重的是:c表不映射為對象。C表也沒有自己的屬性。
  2.聚合和組成
  當實體A的非主鍵列中有一個引自實體B的時候,這種關系是B聚合A。假如這種引用是強制性的,則是合成關系,否則為聚合關系。是否為強制性,只需要將引用列設為非空即可;
  3.繼續(xù)
  當實體A的主鍵引用自實體B的時候(即為外鍵),那么A繼續(xù) B。

  總結:我覺得O/RM的方法有很多,我們可以看到"按外鍵"的方法思路很清楚。但是它在解決一般的關聯(lián)的時候總是引入另外一張表這樣勢必影響效率。另外,既然聚合和組合是關聯(lián)的一種那么即使是組合關系我也把它看成一般關聯(lián),也不算錯的。關系數據庫一開始就不是為了面向對象的語言服務的,所以我們在這里映射無論那種方法似乎都不能說是完全的,正確無誤完成了O/RM。
  所以我覺得一切都要看我們的項目需求。因地制宜!



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色三级三级三级 | 亚洲激情91 | 欧产日产国产精品乱噜噜 | 久久久一区二区精品 | 91色琪琪电影亚洲精品久久 | 久久久久久久一区二区 | 色淫影院 | 国产日韩中文字幕 | 欧美亚洲啪啪 | 成人免费区 | 久久国产免费视频 | 免费看一级视频 | 91福利社在线 | 九九热在线视频观看 | 日韩精品久久久久久 | 国产精品99久久久久久大便 | 精品国产一区二区三区在线观看 | 久久久电影电视剧免费看 | 日韩视频精品一区 | 中文字幕xxx | 农村寡妇偷毛片一级 | 成人在线精品视频 | h视频免费观看 | 成人偷拍片视频在线观看 | 国产91av视频| 日本成人高清视频 | 一级黄色片在线看 | hdbbwsexvideo| 99ri精品| 久久99久久99精品 | 91精品国产免费久久 | 秋霞a级毛片在线看 | 性明星video另类hd | 黄色毛片免费视频 | 国产毛片毛片毛片 | 黄色的视频免费观看 | 久久久久久久久久综合 | 澳门一级淫片免费视频 | www深夜成人 | 欧美另类视频在线 | 久久久青|