面朝大海,春暖花開

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            12 Posts :: 1 Stories :: 3 Comments :: 0 Trackbacks

          最近在讀孫衛(wèi)琴的《精通 Hibernate : JAVA 對(duì)象持久化技術(shù)詳解》,深感 Hibernate 技術(shù)的靈活。當(dāng)然,一個(gè)技術(shù)的靈活所帶來(lái)的副面效應(yīng)就是掌握它的難度隨著靈活度的增加而增加。這本書是以 Hibernate2.0 藍(lán)本講解的,現(xiàn)在 Hibernate 已經(jīng)發(fā)展到了 3.1 了。雖然現(xiàn)在顯得有點(diǎn)過(guò)時(shí)了,但是 ORM 的思想還是一樣的。以后的文章和代碼都以 Hibernate3.1 為藍(lán)本。

          首先我們要解決一個(gè)問(wèn)題就是,為什么我們要使用 Hibernate 技術(shù)。在 JAVA 世界中,已經(jīng)有了由 SUN 提出的業(yè)界的標(biāo)準(zhǔn) J2EE 規(guī)范,在規(guī)范中沒有提到有 ORM 的影子,如果你說(shuō)有的話,那也只是 CMP (容器 Bean )和 ORM 有些神似。但是畢竟 EJB 是個(gè)重量的東東,在你享受 EJB 帶給你的種種優(yōu)厚的待遇同時(shí),你就不得不背負(fù)沉重的枷鎖,這也就是為什么種種輕量級(jí)的框架在 JAVA 社區(qū)大行其道的原因之一。那么有沒有一種方案使我們可以在不使用 EJB 的時(shí)候,還可以從容而且優(yōu)雅的實(shí)現(xiàn)從對(duì)象到數(shù)據(jù)庫(kù)的 mapping 呢?當(dāng)然,那就是 Hibernate

          在介紹 Hibernate 之前,首先讓我們來(lái)看看軟件的幾種模型。

          一、軟件模型

          l???????? 概念模型:

          概念模型清楚的描述出了問(wèn)題域的實(shí)體。我們可以用一對(duì)一、一對(duì)多和多對(duì)多的關(guān)系來(lái)描述實(shí)體之間的關(guān)系。這種關(guān)系是技術(shù)人員和非技術(shù)人員都可以理解的,所以,我們要讓客戶或者領(lǐng)域?qū)<規(guī)椭到y(tǒng)分析人員對(duì)概念模型中出現(xiàn)的問(wèn)題做出修改。

          l???????? 關(guān)系數(shù)據(jù)模型:

          當(dāng)前的計(jì)算機(jī)只能用具有某種結(jié)構(gòu)的形式來(lái)描述現(xiàn)實(shí)世界中的事物。從《數(shù)據(jù)結(jié)構(gòu)》中我們知道,計(jì)算機(jī)世界中常用的數(shù)據(jù)結(jié)構(gòu)有線形結(jié)構(gòu),樹和圖三大類結(jié)構(gòu)。而表屬于線形結(jié)構(gòu)中的一種。計(jì)算機(jī)可以很方便的處理表這種結(jié)構(gòu)的數(shù)據(jù),所以,當(dāng)前采用最廣泛的還是關(guān)系型數(shù)據(jù)庫(kù)(以后簡(jiǎn)稱數(shù)據(jù)庫(kù))。

          數(shù)據(jù)庫(kù)通過(guò)用表,表的索引,視圖和表與表之間的參照完整性來(lái)描述概念模型。

          l???????? 域模型和域?qū)ο螅?/span>

          我們需要在概念模型的基礎(chǔ)上創(chuàng)建域模型,也叫做設(shè)計(jì)模型。域模型的主要內(nèi)容有:

          域?qū)ο螅?/span>

          域?qū)ο?/span> (Domain Object) :是構(gòu)成域模型的基本元素,代表業(yè)務(wù)中的人、事物等。分以下三種:實(shí)體域, J2EE 中的代表是實(shí)體 bean ;過(guò)程域, J2EE 中的代表是 Session bean 或者是消息驅(qū)動(dòng) Bean ;事件域,代表應(yīng)用中的事件。

          域?qū)ο笾g的關(guān)系:

          1 、關(guān)聯(lián)
          一對(duì)多的單向關(guān)聯(lián)

          一對(duì)多的雙向關(guān)聯(lián)

          2 、依賴

          如果存在 class A new class B ,就叫 A 依賴 B 。在實(shí)際的開發(fā)中,往往是過(guò)程域倚賴實(shí)體域。在 J2EE 的世界中,就是往往是由 Session Bean 來(lái)調(diào)用實(shí)體 Bean

          3 、聚集

          描述整體和局部的關(guān)系。

          4 、一般化

          往往指類的繼承關(guān)系

          二、 ORM 介紹

          ORM 的目的就是要把對(duì)象和關(guān)系的 mapping 。從上面的分析可以看出,二者的出發(fā)點(diǎn)是不同的,關(guān)系模型是面向關(guān)系的,域模型是面向?qū)ο蟮摹K鼈兊?/span> mapping 如下:

          面向?qū)ο?/span>

          面向關(guān)系

          對(duì)象

          表中的記錄

          屬性

          表中的字段

          ?

          三、 JAVA 世界中的其他持久化模式

          1 、主動(dòng)域?qū)ο竽J?/span>

          2 JDO 模式

          3 CMP 模式(和 ORM 和類似,不過(guò) CMP 是用在 EJB 容器當(dāng)中,用來(lái)持久化 EJB 組件)。

          ?

          posted on 2006-04-06 20:58 面朝大海 閱讀(144) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 墨竹工卡县| 汝阳县| 太湖县| 明星| 海兴县| 阜新市| 如皋市| 佛冈县| 双辽市| 上高县| 中西区| 临安市| 封丘县| 榆社县| 正定县| 全南县| 汪清县| 孝义市| 汉沽区| 五峰| 康马县| 海丰县| 南陵县| 禹州市| 绥芬河市| 含山县| 仪陇县| 慈溪市| 米泉市| 枣庄市| 拉萨市| 莱州市| 美姑县| 建平县| 宁陵县| 成都市| 禄丰县| 晋中市| 石楼县| 秦皇岛市| 苍山县|