多对一:
<many-to-one name="" class="" column=""></many-to-one>
一对多:
<set name="">
<key column=""></key>
<one-to-many class=""/>
</set>
多对多:(要借助中间表)
<set name="" table="">
<key column=""></key>
<many-to-many class="" column=""></many-to-many>
</set>
// 多对一,一对多实例
<!-- department属性,本类(User)与Department类的多对一 -->
<many-to-one name="department" class="Department" Column=
"departmentId"></many-to-one>
<!-- users属性,本类(Department)与User类的一对多 -->
<set name="users">
<key column="departmentId"></key>
<one-to-many class="User" />
</set>
// 多对多实例
<!-- users属性,本类(Role)与User的多对多 -->
<set name="users" table="tableName
">
<key column="roleId"></key>
<many-to-many class="User" column="userId"></many-to-many>
</set>
<!-- roles属性,本类(User)与Role的多对多 -->
<set name="roles" table="tableName
">
<key column="userId"></key>
<many-to-many class="Role" column="roleId"></many-to-many>
</set>
// 基于外键的一对一与基于主键的一对一
主键关联:原理是两张表的主键(ID)保持一致,在获取的时候根据两种表中的ID相同来作为关系判断的标准,这样的设计好处在于我们不用添加另外的字段来维护它们之间的关系。
唯一外键映射:记住是“唯一”,因为一对一是多对一的一种特例,且在hibernate-mapping中是利用<many-to-one>来表示,这个时候需要指明该标签的unique="true",这才算是一对一,否则就是多对一。
<class name="User" table="t_user">
<id name="id" column="userId">
<generator class="native"></generator>
</id>
<many-to-one name="address" class="com.java.model.Address" column="addressId" cascade="all" unique="true"></many-to-one>
</class>
<class name="Address" table="t_address">
<id name="id" column="addressId">
<generator class="native"></generator>
</id>
<property name="address" column="address"></property>
<!-- property-ref 被关联到此外键的类中的对应属性的名字,若没指定,使用被关联类的主键.由于这里是唯一外键关联,所以一般要设置这里。 -->
<one-to-one name="user" class="com.java.model.User" property-ref="address"></one-to-one>
</class>
————————————————————————————————————————————————————————————————
<class name="User" table="t_user">
<id name="id" column="userId">
<generator class="native"></generator>
</id>
<one-to-one name="address" class="com.java.model.Address" cascade="all"></one-to-one>
</class>
<class name="Address" table="t_address">
<id name="id" column="addressId">
<generator class="foreign">
<!-- 引用User表的主键 -->
<param name="property">user</param>
</generator>
</id>
<property name="address" column="address"></property>
<one-to-one name="user" class="com.java.model.User" constrained="true"></one-to-one>
</class>