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

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

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

    迷失北京

    BlogJava 聯系 聚合 管理
      60 Posts :: 0 Stories :: 13 Comments :: 0 Trackbacks

         又從頭學習了一遍hibernate的映射關系,每一次都會有新的收獲,總是感覺自己還是不會hibernate。單從配置上說:知其然不知其所以然,馬上就要找工作的人了,很是為自己擔心呀!!

         眾所周知,hibernate是一個杰出的O/R MappingObject-Relationl Mapping)框架,單從英文字面意思來解釋:對象關系映射。在面向對象編程的過程中,我們往往先抽象出系統中涉及的實體對象,然后根據對象建立數據表,無疑后面對于數據庫的操作是面向過程的。面向對象是簡潔的,面向過程(操作數據庫,寫sql語句)是復雜的。Hibernate恰恰屏蔽了數據庫操作這層,用戶只需用面向對象的直觀意識來操作數據庫這更像一個facade模式,提供了對外的接口,用戶只需調用接口無需知道具體實現。比如說我想獲得某部門所有成員的信息,用hibernate操作一句話就搞定了session.load(Department.class, n),他的成本僅僅是從數據庫load出所需的部門對象。這種方式操作數據庫才是面向對象的方式,現實世界中也是這樣,我想獲取這個部門的所有成員,只需要知道這個部門的詳細信息,因為他的成員肯定包括在詳細信息中。

         但是關聯關系的作用是什么呢?關聯關系就是hibernate處理對象之間所參照的準則。如果你掌握好了這種規則那么hibernate會更高效的為你工作。舉一個例子:

         假設我們實現一個從ParentChildren的映射:

    <set name="children">
         <key column="pid">
         <one-to-many class="Child">
    </set>
    

      當我們試圖保存一個Child對象時:

    Parent p = session.load(Parent.class, n);
    Child c = new Child();
    c...
    session.save(c);
    p.getChildren().add(c);
    ...

    這樣我們會得到兩條sql語句一條是保存child的語句,另一條是為兩者建立關系的sql語句,相當于hibernate執行了兩次數據庫。

    讓我們看一個更好的方案:

    我們在child方添加配置:

    <many-to-one column="parent" nou-null="rue" column="pid" />

    修改parent的配置,添加inverse="true"屬性,他的意思是將關聯關系交給對方管理,在這就是交給了child一方管理。

    下面我們再來保存一個child實例:

    p.getChildren().add(c);
    c.setParent(p);
    session.save(c);

    這樣只會生成一條insert語句,至于建立兩者之間關系的那條sql語句在child保存的同時已經由hibernate自動更新了,不要忘了維護child-parent之間關系的責任已經交給child一端了。相比上面的方式,我們可以發現hibernate減少了一次操作數據庫的工作,這樣的話相當于你的程序提高了一倍的工作效率,當然只是片面的從操作數據庫數量上來說。

       單向關聯關系有如下幾種:具體還分為有無連接表的。雙向關聯關系亦有有無連接表之分。下面我們來看一下如何配置關聯關系。

    下面這幾種是單向關聯無連接表的:                                

    下面這幾種是單向關聯基于連接表的:

    下面這幾種是雙向關聯無連接表的:

     

    下面這幾種是雙向關聯基于連接表的:







    posted on 2011-07-23 19:20 王康 閱讀(137) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 国产伦精品一区二区三区免费下载| 中国人xxxxx69免费视频| 日本免费人成黄页网观看视频 | 成人免费无码H在线观看不卡| 国产精品成人免费综合| 色婷婷亚洲一区二区三区| 日本一道高清不卡免费| 在线观看亚洲精品专区| 又粗又大又猛又爽免费视频 | 亚洲电影在线免费观看| 亚洲精品在线免费观看视频| 久久精品国产免费观看| 亚洲日本久久久午夜精品| 搡女人免费视频大全| 狠狠入ady亚洲精品| 久久久久亚洲AV综合波多野结衣| 国产精品1024在线永久免费| 亚洲av女电影网| 黄页免费的网站勿入免费直接进入| 亚洲乱码一二三四五六区| 免费看又爽又黄禁片视频1000| 亚洲av乱码中文一区二区三区| 亚洲男人av香蕉爽爽爽爽| 免费一级不卡毛片| 亚洲宅男精品一区在线观看| 日韩成人在线免费视频| 99精品免费视频| 亚洲一区二区三区在线网站| 国产人妖ts在线观看免费视频| 中文字幕视频在线免费观看| 亚洲国产精品成人精品软件 | 亚洲AV无码一区二区三区久久精品| 亚洲精品456播放| 一区二区三区观看免费中文视频在线播放| 亚洲色欲或者高潮影院| 国产精品酒店视频免费看| 99免费在线视频| 亚洲日韩精品无码AV海量| 亚洲一区视频在线播放| 日韩吃奶摸下AA片免费观看| 无遮挡国产高潮视频免费观看|