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

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

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

    和風細雨

    世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術自出。

    持久化對象級聯關系

    類之間關聯的Hibernate表現

    在Java程序中,類之間存在多種包含關系,典型的三種關聯關系有:一個類擁有另一個類的成員,一個類擁有另一個類的集合的成員;兩個類相互擁有對象的集合的成員.在Hibernate中,我們可以使用映射文件中的many-to-one, one-to-many, many-to-many來實現它們.這樣的關系在Hibernate中簡稱為多對一,一對多和多對多.

    多對一的類代碼

    事件與地點是典型的多對一關系,多個事件可以在一個地點發生(時間不同),一個地點可發生多個事件.它們的對應關系是(多)事件對(一)地點.
    兩個類的代碼如右:
    public class Event{
      private String id;
      private String name; 
      private Location location;
    }

    public class Location{
      private String id;
      private String name;
    }

    多對一的映射文件

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="org.hibernate.auction">
      <class name="com.sitinspring.domain.Event"
        table="Event_TB">
        <id name="id" column="ID" >
          <generator class="uuid.hex"/>
        </id>
        <property name="name" column="name" />
        <many-to-one name="location" column="locationId" class="com.sitinspring.domain.Location"/>
      </class>
    </hibernate-mapping>


    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="org.hibernate.auction">
      <class name="com.sitinspring.domain.Location"
        table="Location_TB">
        <id name="id" column="ID" >
          <generator class="uuid.hex"/>
        </id>
        <property name="name" column="name" />
      </class>
    </hibernate-mapping>

    多對一的表數據


    一對多的類代碼

    如果一個用戶有多個權限,那么User類和Privilege類就構成了一對多的關系,User類將包含一個Privilege類的集合.

    public class User{
      private String id;
      private String name;
      private Set<Privilege> privileges=new LinkedHashSet<Privilege>();
    }

    public class Privilege{
      private String id;
      private String userId;
      private int privilegeLevel;
    }


    一對多的映射文件

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="org.hibernate.auction">
      <class name="com.sitinspring.domain.User"
        table="User_TB">
        <id name="id" column="ID" >
          <generator class="uuid.hex"/>
        </id>
        <property name="name" column="name" />
        <set name="privileges">
          <key column="userId"/>
          <one-to-many class="com.sitinspring.domain.Privilege"/>
        </set>
      </class>
    </hibernate-mapping>


    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="org.hibernate.auction">
      <class name="com.sitinspring.domain.Privilege"
        table="Privilege_TB">
        <id name="id" column="ID" >
          <generator class="uuid.hex"/>
        </id>
        <property name="userId" column="userId" />
        <property name="privilegeLevel" column="privilegeLevel" />
      </class>
    </hibernate-mapping>


    一對多的表數據



    多對多

    多對多關系 是指兩個類相互擁有對方的集合,如文章和標簽兩個類,一篇文章可能有多個標簽,一個標簽可能對應多篇文章.要實現這種關系需要一個中間表的輔助.

    類代碼如右:

    public class Article{
        private String id;
        private String name;
       
        private Set<Tag> tags = new HashSet<Tag>();
    }

    public class Tag{
        private String id;
        private String name;
       
        private Set<Article> articles = new HashSet<Article>();
    }

    多對多的映射文件

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="org.hibernate.auction">
      <class name="com.sitinspring.domain.Article" table="ARTICLE_TB">
        <id name="id" column="ID" >
          <generator class="uuid.hex"/>
        </id>
        <property name="name" column="NAME" />

        <set name="tags" table="ARTICLETAG_TB"  cascade="all" lazy="false">
          <key column="ARTICLEID" />
          <many-to-many column="TAGID" class="com.sitinspring.domain.Tag" />
        </set>
      </class>
    </hibernate-mapping>


    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="org.hibernate.auction">
      <class name="com.sitinspring.domain.Tag" table="TAG_TB">
        <id name="id" column="ID" >
          <generator class="uuid.hex"/>
        </id>
        <property name="name"  column="NAME" />
       
        <set name="articles" table="ARTICLETAG_TB" cascade="all" lazy="false">
          <key column="TAGID" />
          <many-to-many column="ARTICLEID" class="com.sitinspring.domain.Article" />
        </set>
      </class>
    </hibernate-mapping>


    多對多的表數據

     

    源碼下載:
    http://m.tkk7.com/Files/junglesong/HibernateMapping20080430203526.rar

    posted on 2008-04-30 20:33 和風細雨 閱讀(804) 評論(0)  編輯  收藏 所屬分類: Hibernate

    主站蜘蛛池模板: 亚洲国产精品日韩av不卡在线| 久久精品亚洲一区二区| 国产成人亚洲综合一区| 91久久精品国产免费直播| 亚洲AV第一页国产精品| 日本一卡精品视频免费| 亚洲国产精品无码久久SM | 国产精品国产亚洲区艳妇糸列短篇 | 亚洲国产精品无码久久一线| 你懂的在线免费观看| 亚洲成在人线av| 99xxoo视频在线永久免费观看| 亚洲av无码无在线观看红杏| 最近中文字幕mv免费高清在线 | 亚洲伊人久久大香线焦| 免费在线观看的网站| 久久亚洲精品11p| 亚洲精品国产高清嫩草影院| 香蕉免费看一区二区三区| 亚洲国产精品高清久久久| 日本在线看片免费人成视频1000| 亚洲午夜成激人情在线影院| 日韩免费视频一区| 国产精品九九久久免费视频| 久久久久亚洲精品影视| 国产精品69白浆在线观看免费| 亚洲欧美日韩一区二区三区在线| 国产成人免费高清在线观看| 国产精品九九久久免费视频| 亚洲高清无在码在线无弹窗| 蜜桃精品免费久久久久影院| 久久久久久久久久免免费精品 | 精品亚洲成a人片在线观看| 国产在线a免费观看| 美女被羞羞网站免费下载| 亚洲色大成网站WWW久久九九| 中字幕视频在线永久在线观看免费| 国产精品亚洲五月天高清| 国产av无码专区亚洲av桃花庵| 国产精品视频永久免费播放| 国内精品99亚洲免费高清|