hibernate多种映射关系

 

1.hibernate多对一映射

   关联映射的本质:将关联关系映射到数据库,所谓的关联关系是对象模型在内存中的一个或多个引用

 

两种策略可以实现一对一的关联映射

   *主键关联:既让两个对象具有相同的主键值,以表明他们之间一一对应的关系:数据库表不会有额外的字段来维护他们之间的关系,仅通过表的主键来关联

   *唯一外键关联:外键关联,本来是用于多对一的配置,但是如果加上唯一的限制后,也可以用来表示一对一关联关系

 

 

<many-to-one>会在多的一端加入一个外键,这个外键是由<many-to-one>中的column属性定义的,如果忽略了这个属性,那么默外键跟实体的属性一致

 

<many-to-one>标签的定义示例:

       *<many-to-one name="group" column="groupid">

注意model中是不用groupid而是用实体对象如下:

  private Group group;——getter和setter方法

 

理解级联的含义:

      *级联是对象的链锁操作(指save,或update,对于delete无效)

      *级联对load不影响,也就是说级联对加载并不影响,只要配置了many-to-one就会加载相关

 

 

 

2.hibernate一对一主键关联映射(单向关联Person——》IdCard

一对一主键关联映射:让两个实体对象的id保持相同,这样可以避免多余的字段

 

具体映射:

    <id name="id">

          <!--person的主键来源,也就是共享idCar的主键-->

          <generator class="foreign">

                  <param name="property">idCard</param>

          </generator>

    </id>

 

     <property name="name"/>

     <!--one to noe 标签的含义,只是hibernate怎样加载它的关联对象,默认根据主键加载-       constrained=”true“,表明当前主键上存在一个约束,person的主键作为外键参照了idCard ->

 

      <one-to-one name="idCard" constrained="true"/>

 

注意两个model中都要有对象的引用

 

 

3.hibernate一对一主键关联映射(双向关联Person《——》IdCard

在单向一对一主键关联的基础上还要在idCard的映射文件中加入<one-to-one>标签指向person,指示hibernate如何加载person,默认根据主键加载:

 

<one-to-one name="person">

 

 

4.hibernate一对一唯一外键关联映射(单向关联Person——》IdCard

一对一主键关联映射:让两个实体对象的id保持相同,这样可以避免多余的字段

 

具体映射:

    <id name="id">

          <generator class="native”/>

    </id>

  

      <many-to-one name="idCard" unique="true"/><!--unique表示唯一性-->

 

注意两个model中都要有对象的引用

 

 

5.hibernate一对一唯一外键关联映射(双向关联person《———》IdCard)

在一对一唯一外键关联的基础上,在IdCard的映射文件中加入<one-to-one>指向person

如:

<one-to-one name="person" property-ref="idCard"/>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值