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"/>

相关推荐