关联映射

1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射:

  1.1:一对多和多对一映射,举例说明:

     学生和老师:

       一个老师可以教多个学生 【一对多映射】

      多个学生可以被一个老师教【多对一映射】

    部门与员工:

      一个部门有多个员工【一对多映射】

      多个员工属于一个部门【多对一映射】

  1.2:多对多,举例说明:

    项目和开发员工:【双向一对多即多对多映射】

      一个项目有多个开发人员【一对多】

         一个开发人员参与多个项目【一对多】

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     
 <!-- 如果hibernate-mapping的package属性直接初始化了,下面就可以直接引用了 -->   
<hibernate-mapping package="com.bie.po">
    <class name="Dept" table="dept">
        <!-- 第一首先写主键映射 -->
         <id name="deptId" column="deptId">
             <generator class="native"></generator>
         </id>
         <!-- 第二写非主键映射 -->
         <property name="deptName" column="deptName" length="20" type="string"></property>
     
         <!--
          第三写其他映射,比如这里的set集合映射,
        -->
         <!--
             一对多关联映射配置(通过部门管理到员工)
             Dept映射关键点
                (1)指定映射的集合属性:""emps;
                 (2)集合属性对应的集合表:"employee";
               (3)集合表的外键字段:employee.empId       
                (4)集合元素的类型
          -->
         <!-- name指定了映射的集合的属性,即集合实例化的emps;table指定了集合属性对应的集合表 -->       
         <set name="emps" table="employee">
            <!--column指定了集合表的外键  -->
             <key column="deptId"></key>
             <!-- class由于上面已经写了包名,这里直接使用即可 -->
             <one-to-many class="Employee"/>
         </set>
     </class>
 </hibernate-mapping>

<?xml version="1.0"?>
 <!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 <!-- 这里指定package,里面就可以直接引用了 -->
 <hibernate-mapping package="com.bie.po">
     <class name="Employee" table="employee">
         <!-- 1:主键映射 -->
         <id name="empId" column="empId">
             <generator class="native"></generator>
         </id>
         
         <!-- 2:非主键映射 -->
         <property name="empName" column="empName" length="20" type="string"></property>
         <property name="salary" column="salary" type="double"></property>
         
        <!--
              多对一的映射配置;Employee映射的关键点
             (1)映射的部门属性:dept
              (2)映射的部门对新,对应的外键字段:deptId
             (3)部门的类型:Dept
          -->
          <many-to-one name="dept" column="deptId" class="Dept"></many-to-one>

   </class>

</hibernate-mapping>   

猜你喜欢

转载自www.cnblogs.com/wang01/p/11666566.html