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

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

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

    posts - 7,  comments - 8,  trackbacks - 0
    近來使用hbernate越多,越覺得他的關系映射不簡單。
    如果用錯映射策略,很可能導致表設計的修改。
    下面我們分析一下他的多對多關系,
    其唯一的用途就是維護關系數據庫中兩張表或者多張表之間的關系
    如最典型的權限設計時,基于組-角色-用戶的設計,
    三者之間分別為多對多的關系,換言之,組可以有多個角色,角色也可以屬于多個組。

    group:
    properties:id,name,description,roleSet,userSet

    role
    properties:id,name,description,groupset

    多對多關系需要一個中間表來維護(group_role)
    group.hbm.xml
    ?1<hibernate-mapping>
    ?2????<class?name="model.GroupInfo"?table="GROUP_INFO"?lazy="false">
    ?3????????<id?name="id"?type="long"?column="ID">
    ?4????????????<generator?class="native"/>
    ?5????????</id>
    ?6????????<property?name="name"?column="name"?length="20"?type="string"/>
    ?7????????<property?name="description"?column="description"?type="string"/>
    ?8????????<set?name="userSet"?table="group_user"?cascade="save-update"?lazy="true">
    ?9????????????<key?column="group_id"/>
    10????????????<many-to-many?column="user_id"?class="com.essp.fable.model.UserInfo"/>
    11????????</set>
    12????????<set?name="roleSet"?table="group_role"?cascade="save-update"?lazy="true">
    13????????????<key?column="group_id"/>
    14????????????<many-to-many?column="role_id"?class="com.essp.fable.model.RoleInfo"/>
    15????????</set>
    16????</class>
    17</hibernate-mapping>
    role.hbm.xml
    ?1<hibernate-mapping>
    ?2????<class?name="model.RoleInfo"?table="ROLE_INFO"?lazy="false">
    ?3????????<id?name="id"?type="long"?column="ID">
    ?4????????????<generator?class="native"/>
    ?5????????</id>
    ?6????????<property?name="name"?column="name"?length="20"?type="string"/>
    ?7????????<set?name="groupSet"?table="group_role"?cascade="save-update"?inverse="true"?lazy="true">
    ?8????????????<key?column="role_id"/>
    ?9????????????<many-to-many?column="group_id"?class="com.essp.fable.model.GroupInfo"/>
    10????????</set>
    11????</class>
    12</hibernate-mapping>

    我們大都以set集合來實現他們的映射關系,配置xml的時候,最重的幾個屬性就是cascadeinverse
    cascade翻譯為 小瀑布, 噴流,在這里表示對象間的級聯關系,可以分別取值 為all,none,save-update,delete,all-delete-orphan,delete-orphan

    cascade屬性并不是多對多關系一定要用的,有了它只是讓我們在插入或刪除對像時更方便一些,只要在cascade的源頭上插入或是刪除,所有cascade的關系就會被自己動的插入或是刪除。
    為了能正確的cascade,unsaved-value是個很重要的屬性。Hibernate通過這個屬性來判斷一個對象應該save還是update,如果這個對象的id是unsaved-value的話,那說明這個對象不是persistence object要save(insert);如果id是非unsaved-value的話,那說明這個對象是persistence object(數據庫中已存在),只要update就行了。saveOrUpdate方法用的也是這個機制。
    如unsaved-value="0",那當該值為0時,hibernate即判斷其為未存儲的對像,當執行saveOrUpdate時,實際執行的是save了。
    In Hibernate3, it is no longer necessary to specify an unsaved-value explicitly. 不過在hibernate3中我們不需要顯示的去指定他,hiberante會自動差別出該對像是否是新產生的對象。

    inverse翻譯為 倒轉的, 反轉的。他屬于關系和對象的級聯關系,默認時為false,,就是說關系的兩端都來維護關系.如果一邊設為true,那表示他們之間的關系由對方來維護。
    比如上面的例子,我們設role的inverse為true,即他們的關系有group來維護。
    GroupInfo group = new GroupInfo();
    group.setName("admin");
    RoleInfo role = new RoleInfo();
    role.setName("acl");
    group.addRole(role);
    save(group);
    執行完這些操作后,hibernate會自動保存group,role,若反之,則只會保存role.
    posted on 2006-06-08 17:24 鹽巴 閱讀(2223) 評論(1)  編輯  收藏 所屬分類: JAVA

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


    網站導航:
     
    主站蜘蛛池模板: 成人超污免费网站在线看| 国精产品一区一区三区免费视频 | 韩国免费一级成人毛片| 亚洲国产精品一区二区久久hs| 一级毛片在线免费播放| 亚洲 无码 在线 专区| 暖暖免费中文在线日本| 亚洲高清最新av网站| 国产日韩在线视频免费播放| 亚洲一级片内射网站在线观看| 一进一出60分钟免费视频| 亚洲国产精品自在拍在线播放| 免费无遮挡无码视频在线观看 | 亚洲va在线va天堂va888www| 最近免费中文字幕MV在线视频3| 亚洲精品国产日韩无码AV永久免费网 | 成全高清视频免费观看| 一本天堂ⅴ无码亚洲道久久| 最好免费观看韩国+日本| 亚洲av无码一区二区三区在线播放 | 亚洲人成77777在线播放网站不卡| 免费看成人AA片无码视频羞羞网| 亚洲1234区乱码| 国产免费怕怕免费视频观看| 免费人成又黄又爽的视频在线电影| 自拍偷自拍亚洲精品第1页| 午夜免费福利片观看| 亚洲精品第一国产综合野| 国产乱子伦精品免费女| 国产成人免费ā片在线观看老同学 | 黄页免费在线观看 | 亚洲福利秒拍一区二区| 暖暖免费高清日本一区二区三区| 色偷偷亚洲第一综合| 亚洲av一综合av一区| 女人18毛片特级一级免费视频 | 羞羞漫画登录页面免费| 亚洲AV永久精品爱情岛论坛 | 全免费a级毛片免费看不卡| a级毛片免费网站| 亚洲最大黄色网址|