1.一对多

主表:省份表--province  从表:城市表--city

City.hbm.xml:

 <many-to-one name="provnice" class="com.ming.hibernate.dao.Provnice" update="false" insert="false" fetch="select">
            <column name="PID" precision="22" scale="0" not-null="true" unique="true" />
 </many-to-one>
 <!--name="province" 与City类的属性名字相同
     class="" 主表的类,用于存储one一方的数据
     
1、当lazy="true" fetch = "select" 的时候 , 这个时候是使用了延迟策略,开始只查询出一端实体,多端的不会查询,只有当用到的时候才会发出sql语句去查询 ; 

2、当lazy="false" fetch = "select" 的时候 , 这个时候是使没有用延迟策略,同时查询出一端和多端,同时产生1+n条sql. 

3、当lazy="true"/lazy="false" fetch = "join"的时候,这个时候延迟已经没有什么用了,因为采用的是外连接查询,同时把一端和多端都查询出来了,延迟没有起作用。

 -->

   Province.hbm.xml

<set name="cities" inverse="false" cascade="all">
            <key>
                <column name="PID" precision="22" scale="0" not-null="true" />
            </key>
            <one-to-many class="com.ming.hibernate.dao.City" />
        </set>

 <!--name="cities" provnice类中的属性名字
     inverse="true" 控制反转,主表控制从表,从表主动记录主表的数据(多的一方记录一的一方数据)
     
     cascade="all" 级联 save update delete都适用
             "saveorupdate" save update适用
             "delete"   delete适用
  -->


2.多对多

学生表:student  教师表:teacher

  TbStudent.hbm.xml:

 <set name="tbTeachers" inverse="false" table="TB_TEACHER_STUDENT" schema="HIBERNATE" cascade="all">
<!--    设置二级缓存 默认不支持集合缓存-->
        <cache usage="read-only"/>
            <key>
                <column name="SID" precision="22" scale="0" not-null="true" />
            </key>
            <many-to-many entity-name="com.ming.hibernate.dao.TbTeacher">
                <column name="TID" precision="22" scale="0" not-null="true" />
            </many-to-many>
        </set>
        
<!--schema="HIBERNATE"  数据库用户名-->

  TbTeacher.hbm.xml

<set name="tbStudents" table="TB_TEACHER_STUDENT" schema="HIBERNATE" cascade="all">
        <cache usage="read-only"/>
            <key>
                <column name="TID" precision="22" scale="0" not-null="true" />
            </key>
            <many-to-many entity-name="com.ming.hibernate.dao.TbStudent">
                <column name="SID" precision="22" scale="0" not-null="true" />
            </many-to-many>
        </set>

3.缓存策略

详见  http://www.cnblogs.com/xiaoluo501395377/p/3377604.html