Hibernate关联关系映射配置

1、配置多对一单向映射

   //对 tab_people表进行配置,factory表不用配置

<hibernate-mapping>

  <class name="com.mr.people.People" table="tab_people">

  <!-- id值 -->
  <id name="id" column="id" type="int">
<generator class="native"/>
</id>
<!-- 公民姓名 -->
<property name="name" type="string" length="45">
<column name="name"/>
</property>
<!-- 公民性别 -->
<property name="sex" type="string" length="2">
<column name="sex"/>
</property>
<!-- 公民年龄 -->
<property name="age" type="int">
<column name="age"/>
</property>
<!-- 多对一关联映射 -->

<many-to-one name="factory" class="com.mr.factory.Factory">

                        <column name="factoryid"/>

                </many-to-one/>

  </class>
 </hibernate-mapping>


2、配置多对一双向关联

(1)配置factory表:   

            <!--定义一对多关联映射--!>

                 <set name="products" inverse="true">
<key column="factoryid"/>
<one-to-many class="com.mr.product.Product"/>
</set>

    注:inverse属性 用于控制方向反转,将inverse属性设置为true,表示Factory对象不再是主控方,将关联关系维护方交给Product类来完成,在Product对象持久化时会主动获取关联Factory的id。

(2)配置product表:    

                <many-to-one name="factory" class="com.mr.factory.Factory">

                        <column name="factoryid"/>

                </many-to-one/>

3、配置一对一主键关联

(1)配置tab_people表:

                <!-- 一对一映射 -->
<one-to-one name="idcard" class="com.mr.idcard.IDcard" cascade="all"/>

(2)配置tab_idcard表:

     <one-to-one name="com.mr.people.People" constrained="true"></one-to-one>

注:一对一主键关联是通过主键形成一对一的映射。

4、配置一对一主键关联

(1)配置tab_people表:

     <!-- 一对一映射 -->

    <many-to-one name="idcard" unique="true">

    <column name="card_id"/>

</many-to-one>

(2)tab_idcard表生成外键:

     <id name="id" column="id" type="int">         <!-- id值 -->
<generator class="foreign">     <!-- 外键生成 -->
<param name="property">people</param>
</generator>
 </id>

注:一对一外键关联实际就是多对一关联的一个特例,需要保证关联字段的唯一性。


5、配置多对多关联关系

    (1)配置tab_user表(由于多对多关联,所以需要引入Set集合)

        <set name="roles" table="tab_mapping">
<key column="user_id"></key>
<many-to-many class="com.mr.role.Role" column="role_id"/>

</set>

    (2)配置tab_role表

        <set name="users" table="tab_mapping">
<key column="role_id"></key>
<many-to-many class="com.mr.user.User" column="user_id"/>

</set>


猜你喜欢

转载自blog.csdn.net/qq_37465368/article/details/80812143