• 关联映射


    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>   

  • 相关阅读:
    Ubuntu 16.04
    每天一道LeetCode--389. Find the Difference
    每天一道LeetCode--371. Sum of Two Integers
    Ubuntu 16.04 小飞机启动失败
    每天一道LeetCode--344. Reverse String
    leetcode1458 Max Dot Product of Two Subsequences
    CF1313C2 Skyscrapers (hard version)
    CF1295C Obtain The String
    CF1251D Salary Changing
    CF1286A Garland
  • 原文地址:https://www.cnblogs.com/wang01/p/11666566.html
Copyright © 2020-2023  润新知