zoukankan      html  css  js  c++  java
  • Hibernate 关联映射

     关联映射:
        1.关于n:1  使用emp和dept进行举例
         单项多对一:
         emp:
         entity:+private Dept dept;
         hbm.xml:+<many-to-one name="dept" column="deptno" class="com.entity.Dept" cascade="save-update" />
         dept无需修改
        
         双向一对多:
         emp:
         entity:+private Dept dept;
         hbm.xml:+<many-to-one name="dept" column="deptno" class="com.entity.Dept" cascade="save-update" />
         dept:
         entity:+private List<Emp> emps;
         hbm.xml:+<bag name="emps" inverse="true" cascade="all">
                     <key>
                         <column name="DEPTNO" precision="2" scale="0" />
                     </key>
                     <one-to-many class="com.entity.Emp" />
                 </bag>
         关于inverse和cascade的设置
         inverse:反转  默认inverse="false"表示主动方  一般将多方设置为主动方
         cascade:级联  none save-update delete all 一般对一方设置级联
        2.多对多:使用Student表和Course表  中间需要一个StuCourse学生课程表
         单向多对多:
         Student:
         entity:+private List<Course> courses = new ArrayList<Course>();
         hbm.xml:
         <bag name="courses" table="STUCOURSE" inverse="false" cascade="save-update">
                    <key>
                        <column name="STUNO" precision="4" scale="0" />
                    </key>
                    <many-to-many class="com.manytomany.entity.Course" >
                     <column name="COURSEID" precision="4" scale="0" />
                    </many-to-many>
                 </bag>
         Course:无需修改
         注意事项:关系表中只保存两列外键,设置inverse="false",在设置级联时需要设置cascade="save-update"
         双向多对多:
         Student:
         entity:+private List<Course> courses = new ArrayList<Course>();
         hbm.xml:
         <bag name="courses" table="STUCOURSE" inverse="false" cascade="save-update">
                    <key>
                        <column name="STUNO" precision="4" scale="0" />
                    </key>
                    <many-to-many class="com.manytomany.entity.Course" >
                     <column name="COURSEID" precision="4" scale="0" />
                    </many-to-many>
                 </bag>
         Course:
         entity:+private List<Student> students = new ArrayList<Student>();
         hbm.xml:
         <bag name="students" table="STUCOURSE" inverse="false" cascade="save-update">
                    <key>
                        <column name="COURSEID" precision="4" scale="0" />
                    </key>
                    <many-to-many class="com.manytomany02.entity.Student" >
                     <column name="STUNO" precision="4" scale="0" />
                    </many-to-many>
                </bag>
         注意事项:关系表中只保存两列外键,设置inverse="false",在设置级联时需要设置cascade="save-update"
        3.一对一:Employee员工表和Passport员工信息表
     主键关联:
         Employee:
         entity:+private Passport passport;
         hbm.xml:
         <one-to-one name="passport"  class="com.entity.Passport" cascade="all" />
         Passport:
         entity:+private Employee employee;
         hbm.xml:
         <generator class="foreign" >
         <param name="property">employee</param>
         </generator>
         <one-to-one name="employee" class="com.entity.Employee" />
         注意事项:主键生成策略选择foreign
         唯一外键:
         Employee:
         entity:+private Passport passport;
         hbm.xml:
         <one-to-one name="passport" class="com.entity.Passport" property-ref="employee"  cascade="all" />
         Passport:
         entity:+private Employee employee;
         hbm.xml:
         <many-to-one name="employee" column="empno" class="com.entity.Employee" unique="true">
  • 相关阅读:
    第四章 瞬时响应:网站的高性能架构(待续)
    第三章 大型网站核心架构要素(待续)
    Luogu P1140 相似基因 【dp】By cellur925
    矩阵快速幂/矩阵加速线性数列 By cellur925
    [POI2008]BLO-Blockade 【无向图tarjan/鸽点】By cellur925
    USACO Training3.3 A Game【区间Dp】 By cellur925
    Luogu P2858 [USACO06FEB]奶牛零食Treats for the Cows 【区间dp】By cellur925
    Luogu P2921 在农场万圣节 【tarjan in 有向图】 By cellur925
    浅谈扩展欧几里得[exgcd] By cellur925
    NOIp 2014 联合权值 By cellur925
  • 原文地址:https://www.cnblogs.com/QQW-HH/p/7642912.html
Copyright © 2011-2022 走看看