`
caoxiping
  • 浏览: 30706 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate 关系映射 多对一 一对一 一对多 单双向

阅读更多
###1 <many-to-one name="group" column="groupid" />
many-to-one标签 会在多的一端加一个外键指向一的一端 name和属性名一致 column 是数据库字段名 指向一端的主键
cascade="all" delete update ... 采用cascade会级联操作主表User所引用的Group对象

###2<one-to-one>主键关联 默认了cascade属性 (双向 要互相持对方引用)
IdCard
<id name="id">
<generator class="native"/>
</id>
<property name="cardNo"/>
<one-to-one name="person"/>

Person
<id name="id">
<generator class="foreign">
   <param name="property">idCard</param>
</generator>
</id>
<property name="name"/>
<one-to-one name="idCard" constrained="true"/> //constrained表示 当前的主键上存在一个约束(Person的主键做为外键参照了idCard)

one-to-one 标签含义,指示Hibernate如何加载其引用对象 默认以主键加载(当前类的主键到idCard中的主键找对应的)

###3<one-to-one>唯一外键关联
IdCard
<id name="id">
<generator class="native"/>
</id>
<property name="cardNo"/>
<one-to-one name="person" property-ref="idCard"/>
//批示Hibernate如何加载其引用对象,默认以person的主键加载,这里要以person的idCard对应的键进行加载

Person
<id name="id">
<generator class="native"/> //不用主键做外键,它可以有自己的生成策略了
</id>
<property name="name"/>
<many-to-one name="idCard" unique="true"/> //多的一端加unique "多"的一端 就唯一了

###4 <one-to-many>
一对多关联 在多的一端加一个外键指向一的一端 维护的是 一到多 的关系 (与多对一关联一至,只是角度不同)

Classes
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<!--
<set name="students" inverse="true" cascade="all"> //加cascade则在存classes时会级联存student;inverse主要用在一对多和多对多关联上
-->
<set name="students" inverse="true"> //在多的一端(student的一端)加一个外键 inverse 关系反转,表明关系靠对端("多"端)
// 即 存class时不会保存它的set中的students 而存student时 会保存它的classes对象 存class时 它不知道有 studens(关系反转了)
<key column="classesid"/>     //在多一端 加一个外键,指向它自身(这里指Classes)
<one-to-many class="com.hibernate.Student"/> //表明students中 存的实体对象类型 使Hibernate找Student.hbm.xml
</set>
Student
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="classes" column="classesid"/> //classesid 与 "一"端指定的字段一致 要与一对多中 key 指定的名字一致

###5<many-to-many>
多对多关联映身 通过中间表维护

User //单向时User映身写法
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>

Role
<id name="id">
<generator class="native"/>
</id>
<property name="name">
<set name="users" table="t_user_role" order-by="userid"> //table 创建第三方表 set无序 order-by 可以排序
<key column="roleid"/> //column 含意是 在多的一端添加一个外键指向自身(在表中加一个字段,引用Role表的主键)
<many-to-many class="com.hibernate.User" column="userid"/>
</set>

User //双向时User映身写法
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="roles" table="t_user_role"> //table 要与另一端定义中间表名字一致
<key column="userid"/>
<many-to-many class="com.hibernate.Role" column="roleid"/>
</set>
分享到:
评论

相关推荐

    Hibernate双向一对一关联映射(注解版)

    本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...

    hibernate关联映射详解

    包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。

    hibernate关系映射多对多关系

    综上所述,这个压缩包提供了关于Hibernate关系映射的全面教程,包括多对多、一对一和一对多的关系配置,以及如何在Spring+Hibernate+Struts环境中应用这些关系。对于想要深入理解Hibernate并提升开发效率的Java...

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

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

    hibernate 映射关系学习入门 多对多实体映射

    本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...

    Hibernate ORM - 一对多双向关联关系

    标题“Hibernate ORM - 一对多双向关联关系”指的是在数据库建模中,Hibernate ORM(对象关系映射)框架如何处理一个实体类(如User)与多个实体类(如Article)之间的关系。在这种关系中,一个用户可以拥有多个文章...

    Hibernate双向一对多经典实例

    3. **双向一对多**:在Hibernate中,双向一对多关系意味着双方都可以导航到对方。班级实体可以访问其所有学生,而每个学生实体也知道它所属的班级。 4. **配置映射文件**:使用Hibernate,我们需要为每个实体创建一...

    hibernate 双向 多对对,一对多,一对一 映射的 集合

    总结起来,Hibernate的双向多对多、一对多、一对一映射提供了灵活的数据关联方式,使得Java对象和数据库表之间的关系得以顺畅地转换和操作。理解并熟练掌握这些映射关系,对于开发高效、稳定的Java持久层代码至关...

    Hibernate双向一对多

    标题"Hibernate双向一对多"指的是Hibernate框架中的一个重要关系映射概念,即在一个实体类中,一个实例可以与多个另一个实体类的实例相关联,而在另一个实体类中,每个实例也可以关联到该实体类的一个实例。这种关系...

    hibernate对映射xml的一对多的双向关联详解

    本篇文章将深入探讨 Hibernate 中的一对多双向关联映射。 在数据库设计中,一对多关联是指一个实体可以与多个其他实体相关联,比如一个学生可以有多个课程,一个部门可以有多名员工。在Hibernate中,这种关系可以...

    hibernate双向一对多关联映射(注解版)

    在Java的持久化框架Hibernate中,双向一对多关联映射是一种常见的关系映射方式,它模拟了数据库中的外键关联,使得一个实体可以拥有多个另一个实体的实例。在这个注解版的实现中,我们将深入探讨如何使用Hibernate的...

    Hibernate 关联关系映射分类

    综上所述,Hibernate提供了丰富的关联关系映射机制,包括一对一、一对多和多对多关联,每种关联又可以细分为单向和双向,以及基于主键和基于外键的不同实现方式。正确理解和选择合适的关联关系对于构建高效、可维护...

    hibernate双向多对多关联映射(注解版)

    在这个“hibernate双向多对多关联映射(注解版)”的主题中,我们将深入探讨如何使用Hibernate的注解配置来处理数据库中的双向多对多关联关系。 首先,多对多关联在数据库设计中是指两个实体之间存在多个对应关系,...

    hibernate关系映射

    在提供的压缩包中,包含了不同类型的Hibernate关系映射配置示例代码,如“一对多.rar”、“多对一或双向一对多.rar”和“多对多.rar”。这些示例可以帮助开发者更好地理解和实践各种关系映射的配置方法。通过深入...

    hibernate双向一对多关联映射(XML)

    在Java的持久化框架Hibernate中,双向一对多关联映射是一种常见的关系数据库模型与对象模型之间的映射方式。这种映射允许在一个实体类中存在多个另一个实体类的实例,而在另一个实体类中也可能存在对第一个实体类的...

    hibernate 映射-一对多双向

    标题中的“hibernate 映射-一对多双向”指的是在Java Hibernate框架中处理数据库关系映射中的一对多关联关系,并且这种关联是双向的。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用Java对象来表示数据库...

    Hibernate教程12_关系映射之一对多(多对一)双向关联

    总的来说,掌握Hibernate的一对多双向关联是提升Java开发能力的关键一步,它能够帮助你更好地理解和处理复杂的数据库交互。在实际项目中,理解并灵活运用这种关系映射,可以提高代码的可读性和维护性,同时也能够...

Global site tag (gtag.js) - Google Analytics