1、多对一关联
场景:多个用户对应一个地址(在多的一方配置关联)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.caokaiyuan.domain">
<class name="User" table="tb_user">
<!-- 配置主键映射 -->
<id name="id" column="id">
<generator class="increment"/>
</id>
<property name="username"/>
<property name="password"/>
<!-- 配置多对一映射 配置的信息有:关联的属性、类名,外键的名称 -->
<many-to-one name="address" class="Address" column="address_id">
</many-to-one>
</class>
</hibernate-mapping>
2、一对多关联
场景:一个地址对应多个街道(在一的一方配置关联)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.caokaiyuan.domain">
<class name="Address" table="address">
<!-- 配置主键映射 -->
<id name="addressId" column="address_id">
<generator class="increment"/>
</id>
<!-- 配置属性映射 -->
<property name="addressDetail"/>
<!-- 配置一对多映射 cascade级联关系 -->
<set name="street" cascade="all">
<!-- 外键名称 -->
<key column="address_id"/>
<!-- 配置一对多映射 -->
<one-to-many class="Street"/>
</set>
</class>
</hibernate-mapping>
3、一对一关联
场景:一条街道对应一个学校(在任意一方配置关联 这里在街道配置关联)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.caokaiyuan.domain">
<class name="Street" table="tb_street">
<!-- 配置主键映射 -->
<id name="streetId" column="street_id">
<!-- 这里用外键(学校的主键)配置主键 -->
<generator class="foreign">
<param name="property">school</param>
</generator>
</id>
<!-- 配置其他属性 -->
<property name="streetName"/>
<!-- 配置一对一映射 -->
<one-to-one name="school"></one-to-one>
</class>
</hibernate-mapping>
总结:主要是配置关联关系时的区别,A对B关联,在A的一方配置关联,一对多,多对一,一对一的关联区别看上面的配置文件