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

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

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

    Flyingis

    Talking and thinking freely !
    Flying in the world of GIS !
    隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
    數(shù)據(jù)加載中……

    Hibernate學(xué)習(xí)心得--軟件設(shè)計階段的模型

        作者:Flyingis

        在科學(xué)和工程技術(shù)領(lǐng)域,模型是一個很有用途的概念,它可以用來模擬一個真實的系統(tǒng)。在軟件開發(fā)領(lǐng)域,模型用來表示真實世界的實體。在軟件開發(fā)的不同階段,需要為目標(biāo)系統(tǒng)創(chuàng)建不同類型的模型。在分析階段,需要創(chuàng)建概念模型。在設(shè)計階段,需要創(chuàng)建域模型和數(shù)據(jù)模型。其中,域模型是面向?qū)ο蟮?,?shù)據(jù)模型是面向關(guān)系的,域模型和數(shù)據(jù)模型之間存在一種對象-關(guān)系映射。

    概念模型

        概念模型清楚地顯示了問題域中的實體。不管是技術(shù)人員還是非技術(shù)人員都能看得懂改面模型,他們可以很容易地提出模型中存在的問題,幫助分析人員及早對模型進(jìn)行修改。在軟件設(shè)計域開發(fā)周期中,模型的變更需求提出得越晚,所耗費得開發(fā)成本就越大。

        概念模型描述了每個實體得概念和屬性,以及實體之間的關(guān)系:一對一、一對多和多對多。在現(xiàn)實生活中都可以找到相應(yīng)的例子,例如一只母雞有很多小雞是一對多關(guān)系,一位客戶選購了很多商品,而這些商品也可以被許多客戶選購,這是多對多關(guān)系。

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

        到目前為止,關(guān)系數(shù)據(jù)庫仍然是使用最廣泛的數(shù)據(jù)庫,它存儲的是關(guān)系數(shù)據(jù)。關(guān)系數(shù)據(jù)模型是在概念模型的基礎(chǔ)上建立起來的,用于描述這些關(guān)系數(shù)據(jù)的靜態(tài)結(jié)構(gòu),它由以下內(nèi)容組成:

        一個或多個表
        表的所有索引
        視圖
        觸發(fā)器
        表與表之間的參照完整性

        數(shù)據(jù)庫Schema是對數(shù)據(jù)模型的實現(xiàn)。對于支持SQL的關(guān)系數(shù)據(jù)庫,可以采用SQL DDL語言來創(chuàng)建數(shù)據(jù)庫Schema。SQL DDL 用于生成數(shù)據(jù)庫中的物理實體,例如下面的創(chuàng)建CUSTOMERS表的 SQL DDL:

        create table CUSTOMERS {
          ID int not null,
          NAME varchar(20),
          AGE int,
          primary key (ID)
        };

        值得注意的是,數(shù)據(jù)庫Schema有兩種含義,一種是概念上的Schema,指的是一組DDL語句集,該語句集完整地描述了數(shù)據(jù)庫的結(jié)構(gòu)。還有一種是物理上的Schema,指的是數(shù)據(jù)庫中的一個名字空間,它包含一組表、視圖和存儲過程等命名對象。物理Schema可以通過標(biāo)準(zhǔn)SQL語句來創(chuàng)建、更新和修改。例如以下SQL語句創(chuàng)建了兩個物理Schema:

        create schema SCHEMA_A;
        create table SCHEMA_A.CUSTOMERS(ID int not null,……);

        create schema SCHEMA_B;
        create table SCHEMA_B.CUSTOMERS(ID int not null,……);

    域模型

        域模型由以下內(nèi)容組成:具有狀態(tài)和行為的域?qū)ο?;域?qū)ο笾g的關(guān)系。

    域?qū)ο?BR>
    1.實體域?qū)ο螅捍砣?、地點、事物或概念。通常,可以把業(yè)務(wù)領(lǐng)域中的名詞,例如客戶、訂單、商品,當(dāng)然也包括前面提到過的母雞,作為實體域?qū)ο螅?BR>2.過程域?qū)ο螅捍響?yīng)用中的業(yè)務(wù)邏輯或流程。它通常依賴于實體域?qū)ο蟆?BR>3.事件域?qū)ο螅捍響?yīng)用中的一些事件,例如異常、警告或超時等。

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

        在域模型中,類之間存在四種關(guān)系。

    1.關(guān)聯(lián)(Association)
       
        關(guān)聯(lián)指的是類之間的引用關(guān)系,這是實體域?qū)ο笾g最普遍的一種關(guān)系。關(guān)聯(lián)可以分為一對一、一對多和多對多關(guān)聯(lián)。

    2.依賴(Dependency)

        依賴指的是類之間的訪問關(guān)系。如果類A訪問類B的屬性或方法,或者說是A負(fù)責(zé)實例化B,那么可以說類A依賴類B。

    3.聚集(Aggregation)

        聚集指的是整體與部分之間的關(guān)系,在實體域?qū)ο笾g也很常見。例如,人與手就是聚集關(guān)系,在Person類中由一個hands集合,它存放被聚集的Hand對象:

        public class Person {
          private Set hands = new HashSet();
          …………
        }

    4.一般化(Generalization)

        一般化指的是類之間的繼承關(guān)系。

    域?qū)ο蟮某志没拍?BR>
        當(dāng)實體域?qū)ο笤趦?nèi)存中創(chuàng)建后,它們不可能永遠(yuǎn)存在。最后,他們要么從內(nèi)存中清除,要么被持久化到數(shù)據(jù)存儲庫中。內(nèi)存無法永久地保存數(shù)據(jù),因此必須對實體域?qū)ο筮M(jìn)行持久化。否則,如果對象沒有被持久化,用戶在應(yīng)用運行時創(chuàng)建地訂單信息將在應(yīng)用結(jié)束運行后隨之消失。

        當(dāng)然,并不是所有地域?qū)ο蠖夹枰志没ǔV挥袑嶓w域?qū)ο蟛判枰志没?,另外,有些實體域?qū)ο笠膊恍枰志没?BR>
        狹義的理解,“持久化”僅僅指把域?qū)ο笥谰帽4娴綌?shù)據(jù)庫中;廣義的理解,“持久化”包括和數(shù)據(jù)庫相關(guān)的各種操作。

       參考書籍:孫衛(wèi)琴 精通Hibernate Java對象持久化技術(shù)詳解

    posted on 2005-11-12 19:14 Flyingis 閱讀(2537) 評論(0)  編輯  收藏 所屬分類: Hibernate

    主站蜘蛛池模板: 亚洲人成人伊人成综合网无码| 亚洲校园春色小说| 国产亚洲精品美女久久久| 亚洲综合在线成人一区| 亚洲爆乳AAA无码专区| 黄网站免费在线观看| 白白国产永久免费视频| 久久精品国产96精品亚洲| 亚洲精华液一二三产区| 在线免费一区二区| 久久久久亚洲AV成人无码| 国产精品亚洲色图| 免费A级毛片无码A∨免费| 亚洲性久久久影院| 亚洲精品无AMM毛片| 免费夜色污私人影院在线观看| 亚洲国产成人无码av在线播放| 一级人做人爰a全过程免费视频| 一本无码人妻在中文字幕免费| 亚洲AV无码一区东京热| 0588影视手机免费看片| 久久久久亚洲Av无码专| 一区二区在线免费视频| 亚洲AV无码专区电影在线观看| 在线永久免费的视频草莓| 亚洲一区二区三区高清| 成人au免费视频影院| 99久久免费国产精品热| 亚洲人成中文字幕在线观看| 一二三四在线观看免费中文在线观看| 99无码人妻一区二区三区免费| 国产成人综合亚洲| 久久久久久久亚洲Av无码 | 最近免费中文字幕大全视频| 99亚偷拍自图区亚洲| 香蕉高清免费永久在线视频| 国产日韩AV免费无码一区二区三区 | 99久久久国产精品免费牛牛| 亚洲国产高清视频在线观看| 亚洲熟女乱综合一区二区| 无码日韩人妻av一区免费|