`

Hibernate 关联映射总结

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

多对一(many-to-one)
    <many-to-one>会在多的一端加入一个外键,指向一的一端,这个外键是由<many-to-one>中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致。
  
     我用user和group做示例:
     多个user对于一个group
    user.hbm.xml的写法:
     <hibernate-mapping>
         <class name="com.simlink.data.ho.User" table="t_user">
              <id name="id">
                   <generator class="native" />
              </id>
              <property name="name">
              <many-to-one name="group" column="groupid">
         </calss>
    </hibernate-mapping>

cascade(级联)
    <many-to-one>有一个重要的属性cascade(级联)
    * 级联的意思是指两个对象之间的操作联动关系,对一个对象执行了操作之后,对其指定的级联对象也需要执行相同的操作。
     * 总共可以取值为:all、 none、 save-delete、 delete
    *  all代表所有情况下都执行级联操作
     * none 代表所有情况下都不执行级联操作
     * save-delete 代表只有在保存和删除的情况下才执行级联操作
     * delete 代表只有在删除的情况下才执行级联操作


一对一(one-to-one)关联映射
有两种策略可以实现一对一的关联映射:
    * 主键关联:即让两个对于具有相同的主键值,以表明它们之间的一一对于关系。数据库表不会有额外的字段来维护它们之间的关系,仅通过主键来关联。
    * 唯一外键关联:外键关联,本来用于多对一配置,但是如果加上唯一的限制之后,也可以用来表示一对一关联映射。


一对一主键关联--单向
    我用person和card做示例:
     一个人对于一个身份证,单向关联Person---->Card
    一对一主键关联映射:让两个实体对象的id保持相同,这样可以避免多余的字段被创建
   
     person.hbm.xml的写法:
      <hibernate-mapping>
         <class name="com.simlink.data.ho.Person" table="t_person">
              <id name="id">
                   <!-- person的主键来源card,也就是共享card的主键 -->
                   <generator class="foreign">
                       <param name="property">card</param>
                   </generator>
  
              </id>
              <property name="name">
              <!-- one-to-one标签的含义,指示hibernate怎么加载它的关联对象,默认根据主键加载,constrained="true",表明当前主键上存在一个约束,person的主键作为外键参照了card -->
              <one-to-one name="card" constrained="true">
         </calss>
    </hibernate-mapping>

一对一主键关联--双向
     一个人对应一个身份证,一个身份证对应一个人,双向关联Person<---->Card
     person.hbm.xml的写法不变,需要改一下card.hbm.xml
     card.hbm.xml的写法:
      <hibernate-mapping>
         <class name="com.simlink.data.ho.Card" table="t_card">
              <id name="id">
                   <generator class="native" />
              </id>
              <property name="cardid">
              <one-to-one name="person">
         </calss>
    </hibernate-mapping>


一对一唯一外键关联映射是多对一关联映射的特例,就是将外键限制为唯一。

一对一唯一外键关联--单向
    在person中多了一个外键cardno,引用card的主键,设置person里的cardid唯一
     user.hbm.xml的写法:
     <hibernate-mapping>
         <class name="com.simlink.data.ho.Person" table="t_person">
              <id name="id">
                   <generator class="native" />
              </id>
              <property name="name">
              <many-to-one name="card" unique="true">        
        </calss>
    </hibernate-mapping>


一对一唯一外键关联--双向
     在card的配置中指明card连接到person的cardid字段(默认会连person的主键)
      person.bbm.xml的写法同上。
      card.hbm.xml的写法:
      <hibernate-mapping>
         <class name="com.simlink.data.ho.Card" table="t_card">
              <id name="id">
                   <generator class="native" />
              </id>
              <property name="cardno">
              <one-to-one name="person" property-ref="cardid">
         </calss>
    </hibernate-mapping>

















分享到:
评论
1 楼 yulongxiang 2011-03-28  

相关推荐

    hibernate关联映射详解

    hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...

    hibernate映射关系总结

    hibernate开发的关系: one-to-one,many-to-one,many-to-many学习经验总结

    hibernate关联映射实例

    本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...

    hibernate关联映射的作用和常用属性解释

    ### Hibernate关联映射的作用与常用属性详解 #### 关联映射概述 在对象关系映射(Object Relational Mapping,简称ORM)技术中,Hibernate作为Java领域内非常成熟且功能强大的框架之一,它允许开发者将Java类映射...

    Hibernate关联映射

    在 Hibernate 映射中,需要使用 `one-to-one` 元素,并设置 `constrained="true"`,表明该类的主键由关联类生成。 3. Hibernate 一对一连接表单向关联: 这种关联方式是通过额外的连接表来实现一对一关系的。连接...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    Hibernate关联映射.rar

    本教程“Hibernate关联映射.rar”聚焦于Hibernate中的关联映射,特别是多对一和一对多的关系映射,非常适合初学者了解和实践。 首先,我们要理解什么是关联映射。在数据库中,表与表之间存在各种关系,如一对一、一...

    Hibernate集合映射与关联关系

    本主题将深入探讨Hibernate集合映射与关联关系,包括"student与Score的Map集合关系"、"student与class的多对一"以及"一对多映射"的概念。 首先,让我们理解一下Hibernate中的集合映射。在关系型数据库中,一个实体...

    Hibernate一对一主键关联映射(双向关联)

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...

    hibernate 全面学习->hibernate 关联映射学习

    总的来说,这个压缩包提供了丰富的Hibernate关联映射的学习资源,涵盖了从基础到进阶的各种关联类型。通过学习这些示例,你将能够熟练掌握如何在Java项目中使用Hibernate进行数据持久化,并灵活地处理各种数据库关系...

    hibernate关联映射详解SSH 多对多,一对多关系对象映射

    在Java的持久化框架Hibernate中,关联映射是至关重要的概念,它允许我们将数据库中的表关系映射到对象之间的关系。SSH(Struts、Spring、Hibernate)是经典的Java Web开发框架,其中Hibernate负责数据访问层,提供了...

    Hibernate关联映射-one to one单向外键关联

    本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...

    hibernate关联关系总结

    Hibernate关联关系是Java持久化框架Hibernate中的核心概念,它允许我们在数据库中建立对象之间的关系映射,以便在程序中操作对象时,可以自动处理与数据库的交互。本篇将深入探讨Hibernate的四种主要关联关系:一对...

    Hibernate 关联映射

    这可能是测试Hibernate关联映射的一个示例项目或者类。通常,这样的测试会包含各种关联映射的实例,如实体类的定义,配置文件或注解,以及测试用例,用于验证关联映射是否按预期工作。 **详细知识讲解:** 1. **一...

    hibernate 关联映射(一) many to one

    本文将深入探讨“Hibernate关联映射中的Many-to-One关系”。 Many-to-One关联是现实世界中常见的关系类型,比如一个学生可以对应多个课程,而一个课程可能被多个学生选修。在数据库中,这通常表现为一对多(One-to-...

    hibernate 关联映射(二) one to one(单向)

    总结来说,Hibernate的One-to-One关联映射提供了一种方便的方式来处理一对一关系,通过源码分析我们可以更深入地理解其内部机制。在实际开发中,根据业务需求合理配置`@OneToOne`注解,可以提高代码的可读性和数据库...

    Hibernate 关联关系映射分类

    在深入探讨Hibernate关联关系映射分类之前,我们首先简要回顾一下Hibernate框架的基本概念。Hibernate是一种持久层框架,主要用于Java应用程序中的对象关系映射(ORM),它能够将面向对象的数据模型转换为数据库中的...

Global site tag (gtag.js) - Google Analytics