分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

Hibernate 关联映射

发布时间:2023-09-06 01:16责任编辑:顾先生关键词: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">

Hibernate 关联映射

原文地址:http://www.cnblogs.com/QQW-HH/p/7642912.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved