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/>
</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>