hibernate中對象與對象的關係(二):list,一對一,多對多

來源:互聯網
上載者:User

標籤:--   property   logs   key   utils   one   一對一   學生   etc   

①:list  還是用學生和班級舉例子,list是將學生添加進list集合時的順序

Clazz類

public class Clazz {    private Long id;    private String name;    private List<Student> stus = new ArrayList<>();}

Student類:

public class Student {    private Long id;    private String name;    private Clazz clz;//Clazz類為Student的欄位}

Clazz.hbm.xml;

<hibernate-mapping package="objectn.exus.s3_list">    <class name="Clazz">        <id name="id" column="c_id">            <generator class="native"/>        </id>      <property name="name" />
    <list name="stus">        <key column="c_id"></key>        <!-- list是有序的,將學生對象添加到list集合的順序 -->        <index column="index123" ></index>        <one-to-many class="Student"/>    </list>
    </class>
</hibernate-mapping>

Student.hbm.xml;

<hibernate-mapping package="objectn.exus.s3_list">    <class name="Student">        <id name="id">            <generator class="native"/>        </id>      <property name="name" />      <!-- 多對一,name為類中的變數 ,column為產生的列名-->      <many-to-one name="clz" column="c_id"></many-to-one>    </class></hibernate-mapping>

②:一對一  即社會安全號碼對應每一個人

IDCard類:

public class IDCard {    private String name;    private Long id;    private Person per;}

Person類:

public class Person {    private Long id;    private String name;    private IDCard card;}

IDcard.hbm.xml;

<hibernate-mapping package="objectn.exus.s4_one2one">    <class name="IDCard">        <id name="id" column="c_id">            <generator class="foreign">                <param name="property">per</param>            </generator>        </id>      <property name="name" />      <!-- constrained:添加一個主鍵約束 -->      <one-to-one name="per" constrained="true"/>    </class></hibernate-mapping>

person.hbm.xml;

<hibernate-mapping package="objectn.exus.s4_one2one">    <class name="Person">        <id name="id">            <generator class="native"/>        </id>      <property name="name" />      <one-to-one name="card"/>    </class></hibernate-mapping>

測試類別:

public void testsave12() {        IDCard card = new IDCard("asdasd");        Person p = new Person("張三");        card.setPer(p);        p.setCard(card);        Session session = HibernateUtils.getSession();        Transaction transaction = session.beginTransaction();        session.save(p);//先儲存主鍵        session.save(card);        transaction.commit();        session.close();}

③:多對多,即學生和老師的關係

Student類:

 

public class Student {    private Long id;    private String name;    private Set<Teacher> teac = new HashSet<>();}

 

Teacher類:

public class Teacher {    private Long id;    private String name;    private Set<Student> stus = new HashSet<>();}

Student.hbm.xml;

<hibernate-mapping package="objectn.exus.s5_many2many">    <class name="Student">        <id name="id" column="s_id">            <generator class="native"></generator>        </id>      <property name="name" />         <!--          t_tea_stu: 設定中間表的表名        -->      <set name="teac" table="t_tea_stu" >        <!--         key:代表中間表的和當前對象對應的ID的列名            設定中間表的那一列關聯到當前表        -->          <key  column="id_stu"/>          <!--          class: 設定對方的類名        column: 代表對方對象在中間表的列名                設定中間表的哪一列關聯到對方的表         -->          <many-to-many class="Teacher" column="id_tea" ></many-to-many>      </set>    </class></hibernate-mapping>

teacher.hbm.xml;

<hibernate-mapping package="objectn.exus.s5_many2many">    <class name="Teacher">        <id name="id">            <generator class="native"/>        </id>      <property name="name" />      <set name="stus" table="t_tea_stu">          <key column="id_tea"></key>          <many-to-many class="Student" column="id_stu"></many-to-many>      </set>    </class></hibernate-mapping>

 

hibernate中對象與對象的關係(二):list,一對一,多對多

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.