Hibernateday04学习笔记

一对多
 O           Dept                                              Employee
关系属性:Set<Employee> emps=new HashSet<Employee>             Dept
 R    表
    t_dept      普通的字段
    t_employee  普通的字段+d_id(外键)
 M  映射文件
    <class name=" xx" table="Dept">
      <id ....></id>
      ...
      <!--关系属性
        为了减少多次更新的操作,inverse="true":是key标签失效
      -->
      <set name="关系属性的名称" cascade="save-update" inverse="true">
        <key column="d_id"/><!--外键-->
        <one-to-many class="Employee"/>
      </set>
    </class>
    <class name="Employee" table="employee">
      <id>....</id>
       ....
       <!--关系属性 employee 有一个外键列 d_id-->
       <many-to-one name="dept" class="Dept" column="d_id"    
              cascade="save-update"></many-to-one>
      </class>

  当设置cascade=save-update 删除不级联删除
  1.如果删除的当前对象能够获得明确的外键列的话,可以直接删除,不用再内存中解除关系
  2.如果删除的当前对象不能获得明确的外键列的话,要先解除关系在删除
      注意:inverse="true"

  保存对象时,如果有关联对象,要现在内存中确定他们的关系,而且应该能双向设置

一对多的自身相关
   以Emp表为例:一个雇员会有多个下属,一个雇员也只能有一个上级


从员工找经理(1:1)
class Emp{//配置员工
 Integer empNo  
 String eName                    
 String job                       
 Emp mrg //经理也是员工,我们需要获得是Emp而不是一个经理的empNo           
 Date  hireDate                      
 Double sal  //如果表当中的该字段允许为null ,对象中应该使用封装类     
 Double comm                         
 Integer deptNo
}

从经理找员工{1:*}
class Emp{
 Integer empNo  
 String eName                    
 String job                       
 Integer mrg        
 Date  hireDate                      
 Double sal   
 Double comm                         
 Integer deptNo
 Set<Emp> undering;//关系属性
}

自身相关的双向关系
 class Emp{
   Integer empNo  
   String eName                    
   String job                       
   Emp mrg    //可以从员工查找经理    
   Date  hireDate                      
   Double sal   
   Double comm                         
   Integer deptNo
   Set<Emp> undering;//可以从经理查找员工
 }

 多对多
O           Student      Course 一个学生有多门课程,一个课程有多个学生
               *      :   *
关系属性  Set<Course>    Set<Student>

R 如何在数据库中表明多对多的关系,提供第三张表,作为关系表
 t_student           t_course           关系表  t_s_c
   id name   age      id  name  score            s_id   c_id 两列联合唯一
    1 haoren 22       1  java   1                1      1
    2 clam   23       2  c++    1                1      2

M 多对多映射文件 三张表两个外建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值