hibernate关联映射

Hibernate一对多关联映射(注解) NULL 博文链接:https://profound-accumulation.iteye.com/blog/2243079 立即下载

hibernate多对一关联映射[关系:用户user(多)----组group(一)]

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

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

<many-to-one>标签的定义示例:
  * <many-to-one name="group" column="groupid"/>
 
理解级联的含义?
 * 是对象的连锁操作  <many-to-one name="group" column="group_id" cascade="save-update"/ >

如果不加cascade属性,并且不提前保存"一的"一端的对象,那么会出现以下情况:

   //不能成功保存,抛出TransientObjectException异常
   //因为Group为Tran sient状态,oid没有分配值
   //persistent状态的对象是不能引用transient状态的对象的

====================================================================

hibernate一对一关联映射(分为主键单项关联和双向关联,唯一外键单项关联和双向关联) [关系:身份证idCard --- 人person]

<class name="Person" table="t_person">
  <id name="id">

<!-- 单项主键关联,参照idcard的主键来关联-->
   <generator class="foreign">
    <param name="property">idCard</param>
   </generator>
  </id>
  <property name="name" length="20"/>
  <!-- constrained="true" 外键约束-->
  <one-to-one name="idCard" constrained="true" />
 </class>

+++++++++++++++++++++++++++++++++++++

<class name="IdCard" table="t_idcard">
  <id name="id">
   <generator class="sequence">
    <param name="sequence">TEST_IDCARD_SEQUENCE</param>
   </generator>
  </id>
  <property name="cardNo" length="20"/>
  <one-to-one name="person" /> <!--单项关联没有此元素-->
 </class>

-------------------------------------------------------------------------

one2one唯一外键关联,是多对一的特例,unique="true" 这个属性,保证数据库中该字段不重复

<class name="Person" table="t_person">  

<id name="id">
   <generator class="sequence">
    <param name="sequence">TEST_PERSON_SEQUENCE</param>
   </generator>
  </id>
  <property name="name" length="20"/>
  <many-to-one name="idCard" unique="true" cascade="save-update"/>
 </class>

+++++++++++++++++++++++++++++++++++++++++++

<class name="IdCard" table="t_idcard">
  <id name="id">
   <generator class="sequence">
    <param name="sequence">TEST_IDCARD_SEQUENCE</param>
   </generator>
  </id>
  <property name="cardNo" length="20"/>
  <one-to-one name="person" property-ref="idCard"/> <!-- 单项关联没有此项-->

=======================================================

hibernate一对多关联映射(单双向) [关系:class(一)--- student(多)]

注意:一对多 级联删除的时候 ,删一的一端,有时会报错,说找到子记录,要把inverse=“true” 删除,才能实现不报错,但是,删除之后,只是把子记录的关联值设置为null而不会删除关联的子记录。(待更新 子记录删除的方法。。)

在class.java当中,有students的集合属性,private Set students.

单向:

<class name="Classes" table="t_classes">
  <id name="id">
   <generator class="sequence">
    <param name="sequence">TEST_CLASSES_SEQUENCE</param>
   </generator>
  </id>
  <property name="name" length="20"/>

 <!-- students 是classes实体类中的Set集合-->
<!--  inverse="true"用于双向关联中,标识one2many标签失效,采用多的一端的many2one配置, cascade="all"用于双向关联当中,在用多的一端的配置关系进行保存的时候,会起到先持久一的一端的对象,然后进行多的一端的持久..-->
  <set name="students " inverse="true" cascade="all"> 

  <key column="classesid"></ key>  <!--会在student表里,增加classesid字段,来进行关联-->
   <one-to-many class="Student"/>
  </set>
 </class>

+++++++++++++++++++++++++++

<class name="Student" table="t_student">
  <id name="id">
   <generator class="sequence">
    <param name="sequence">TEST_STUDENT_SEQUENCE</param>
   </generator>
  </id>
  <property name="name" length="20"/>

<many-to-one name="classes" column="classesid" /> <!-- 用于双向关联,保证和单项关联都用一个外键进行关联-->

 </class>

 

=======================================================

hibernate多对多关联映射(单双向) [关系:user(多)--- role(多)],多对多的单项双项关联区别不大,配置都一样{多个用户拥有多个权限,多个权限拥有多个用户}

注:多对多会出产生一张关系表

user.hbm.xml:

<class name="User" table="t_user">
  <id name="id">
   <generator class="sequence">
    <param name="sequence">TEST_USER_SEQUENCE</param>
   </generator>
  </id>
  <property name="name" length="20"/>
  <set name="roles" table="t_user_roles ">  产生关系表
   <key column="userid " />   user主键
   <many-to-many class="Role" column="roleid " />  role主键,其中 "Role" 是user实体类的一个set集合 roleid关联role
  </set>
 </class>

+++++++++++++++++++++++++++++++++++++++++++++++++++++

Role.hbm.xml:

<class name="Role" table="t_role">
  <id name="id">
   <generator class="sequence">
    <param name="sequence">TEST_ROLE_SEQUENCE</param>
   </generator>
  </id>
  <property name="name" length="20"/>
  <set name="users" table="t_user_roles ">  确保和user共同的一张关系表
   <key column="roleid "></key>  确保和user操作的是同一个字段
   <many-to-many class="User" column="userid "></many-to-many>  确保和user操作的是同一个字段
  </set>
 </class>

 ==============================================================

                                 ---------                     项目

关联关系

  *.hbm.xml

描述

Many2one

用户2 组

多的一端(user.hbm.xml) 加入 :

< many-to-one  name = "group"  column = "group_id"  cascade = "save-update" />

Group 为user 实体类中的一个对象 , 多个用户对应一个组, 会在多的一端加入一个外键 , 来指向一的一端 . 会在 user 一端加入 group_id   指向group 主键 , 在执行 save 的时候 , 确保 group 为持久状态 ,

One2one

人2 身份证

person.hbm.xml

方法一: 主键关联

< id  name = "id" >

< generator  class = "foreign" >

< param   name = "property" >

idCard

</ param >

</ generator >

</ id >

< property   name = "name"  length = "20" />

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

方法二: 唯一外键关联 :

< many-to-one  name = "idCard"  unique = "true"  cascade = "save-update" />

Idcard.hbm.xml

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

Person和 idcard 的实体类中都有对方的属性 .

 

方法一:Person 的主键作为外键引用 idCard, 元素当中的 idCard 是 person 实体类中的属性 .

constrained="true" 外键约束

方法二:many2one 特例 , 会产生一个外键来关联 idcard 的主键 , 实现一对一 .

 

 

 

 

 

这个property-ref 意思是 idcard 一对一参照 person 当中的 idcard 的外键

One2many

Class2students

Class.hbm.xml:

< set   name = "students"  inverse = "true"  cascade = "all" >

< key column = "classesid" / >

< one-to-many  class = "Student" />

</ set >

Student.hbm.xml:

< many-to-one  name = "classes"  column = "classesid"  />

Class当中有 students 的 set 集合 ,

inverse = "true" , 意思是让这种one-to-many 的映射关系失效 , 采用 student.hbm.xml 中的 many-to-on 反向的实现一对多 .

 

在student 一端产生一个外键来进行关联

Students当中有 class 对象属性 ,

 

Many2many

用户2 权限

Role.hbm.xml :

< set  name = "users"  table = "t_user_roles" >

< key  column = "roleid" ></ key >

< many-to-many  class = "User"  column = "userid" ></ many-to-many >

</ set >

User.hbm.xml:

< set  name = "roles"  table = "t_user_roles" >

< key  column = "userid"  />

< many-to-many  class = "Role"  column = "roleid"  />

</ set >

多对多产生一张关系表

根据 table = "t_user_roles"

产生一张t_user_roles 关系表 ,

需要注意的是: 双方都要配置同一张关系表

字段必须一致 才能实现多对多关联关系

hibernate 关联映射(二) one to one(单向) NULL 博文链接:https://selvemen.iteye.com/blog/459102 立即下载

相关推荐

hibernate关联映射详解

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

Java三大框架之——Hibernate关联映射与级联操作

什么是Hibernate中的关联映射?   简单来说Hibernate是ORM映射的持久层框架,全称是(Object Relational Mapping),即对象关系映射。   它将数据库中的表映射成对应的对象,以对象的形式展现,这样我们就可以通过映射的对象来对数据库中的数据进行间接的操作。   关联映射是将数据库中的表映射成与之相对应的对象,当你对这个对象进行操作的时候,Hibernat...

weixin_34320724的博客 361

Hibernate关联映射

Hibernate 一对一外键单向关联 Hibernate 一对一主键单向关联 Hibernate 一对一连接表单向关联 Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接表单向关联 Hibernate 多对多单向关联 Hibernate 一对一外键双向关联 Hibernate 一对一主键双向关联 Hibernate 一对一连接表双向关联 Hibernate 一对多外键双向关联 Hibernate 一对多连接表双向关联 Hibernate 多对多双向关联

Hibernate关联关系映射

1. 单向一对一 (1)主键关联:两个表通过主键建立一对一关联关系,从表的主键由被关联类生成。 映射代码: <!--主键生成器--> <generator class="foreign"/> <!--生成策略设为foreign,表明由关联类来生成主键--> <one-to-one name="关联属性的属性名" class="持久化类" constrai...

qq_41659353的博客 270

最新版IAR9.40和注册工具

IAR最新版的IDE在编译速度和代码提示等各个方面上都有很大提升,软件这个东西果然还是越新越好。之前的时候,IAR v9系列网上很多人都说能用,但是又没有把 IAR v9系列的注册方法写的很清楚,导致我一直都用注册老版本v8的方法去注册v9。结果注册后都会提示。

xue_nuo的博客 4万+

【图像大模型】RIFE实战:如何通过中间流估计实现4K视频的实时插帧优化

本文深入解析了基于深度学习的RIFE视频插帧算法,重点探讨其核心的中间流估计技术如何实现高效精准的帧生成。通过实战教程,详细介绍了针对4K视频的实时处理优化方案,包括环境配置、参数调优及性能瓶颈分析,帮助用户利用消费级显卡将低帧率视频转化为流畅的高帧率体验。

weixin_29093017的博客 455

Hibernate关联映射(非常详细)

在前面的学习中,我们所涉及的都是基于单表的操作,但在实际的开发过程中,基本上都是同时对多张表的操作,且这些表都存在一定的关联关系。 Hibernate 是一款基于 ORM 设计思想的框架,它将关系型数据库中的表与我们 Java 实体类进行映射,表中的记录对应实体类的对象,而表中的字段对应着实体类中的属性。Hibernate 进行增删改查等操作时,不再直接操作数据库表,而是对与之对应的实体类对象进行处理。那么,Hibernate 是如何处理多表关联问题的呢?本节我们针对此问题进行介绍。 关联映射 在关系型

youandme520的专栏 2127

影刀初级考试操作题2

题型E主要考察了Excel的操作,总体上难度不大,流程也很少。有些细节地方比如是追加还是覆盖,多试几次就没问题了。

weisili2012的博客 1万+

Hibernate的七种映射关系之七种关联映射

关联映射就是将关联关系映射到数据库里,在对象模型中就是一个或多个引用。     一、Hibernate多对一关联映射:就是在“多”的一端加外键,指向“一”的一端。   比如多个学生对应一个班级,多个用户对应一个级别等等,都是多对一关系。      1、“多”端实体加入引用“一”端实体的变量及getter,setter方法。   比如说多个学生对应一个班级,在学生实体类加入:pri

kevincol22的专栏 879

改进的主动轮廓模型实现图像分割

主动轮廓模型的优点在于可以自适应地调整轮廓形状和位置,适用于不同形状和大小的目标分割。改进的主动轮廓模型是一种有效的图像分割方法,能够适应不同场景下的图像分割需求。改进的主动轮廓模型涉及到许多参数,如模型参数、分割参数、权值系数等,这些参数的调整也会直接影响到分割结果。本文将介绍一个改进的主动轮廓模型,该模型可以实现对图像进行有效的分割。改进的主动轮廓模型是在传统的主动轮廓模型基础上进行的改进。和传统的模型相比,改进的主动轮廓模型加入了外部力和内部力,能够更好地适应复杂场景下的图像分割。

qq_39605374的博客 294

Autosar EcuM配置-初始化及下电执行函数-基于ETAS软件

Autosar EcuM学习笔记-上电初始化执行函数及下电前执行函数,本文介绍在EcuM中的配置及使用。

赞的博客 848

Hibernate注解版关联关系映射全解析+案例

给大家送一个小福利附高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、准备面试跳槽、自身职业规划迷茫的朋友们。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!注意[java]view plaincopy[外链图片转存中…(img-6F15TKWf-1713854767554)][外链图片转存中…(img-mjs0fzEU-1713854767554)]

m0_72758098的博客 878

【WRF工具】WRF 模型输出可视化工具 plotfmt

【WRF工具】WRF 模型输出可视化工具 plotfmt

WW、forever的博客 1292

Hibernate之一对一关联映射

Hibernate中一对一关联映射共分为两种,一种是一对一主键关联映射,另一种是一对一唯一外键关联映射。下面简单介绍一下这两种关联映射。 一对一主键关联映射 一对一主键关联映射的两个实体有相同的ID。这种映射又分为单向一对一关联主键映射和双向一对一主键关联映射。 单向一对一主键关联映射 实例类图 映射文件IdCard.hbm.xml

梦想起飞的地方,必须用心去经营 2204

SpringBoot+Vue+kkFileView实现文档管理(文档上传、下载、在线预览)

上面在使用OpenOffice实现doc、excel、ppt等文档的管理和预览。除此之外可用kkFileView实现包括且更多文档的预览。

BADAO_LIUMANG_QIZHI的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

hibernate关联映射注解

hibernate的关联映射

xiaoerjun的博客 287

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

hibernate关联映射_具有关联映射的Hibernate Composite ID

hibernate关联映射 最近,我们面临着带有复合id字段的Hibernate关联映射的棘手情况。 我们需要与一对一和多对一进行双向关联。我们的拖曳表是“ REPORT”和“ REPORT_SUMMARY”,它们之间具有从REPORT到REPORT_SUMMARY的一对多关系,而从REPORT_SUMMARY到REPORT表。 REPORT_SUMMARY表的主键定义为复合主键,它由自动增...

最佳 Java 编程 118

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Hibernate的关联映射

首先我们了解一个名词ORM,全称是(Object Relational Mapping),即对象关系映射。ORM的实现思想就是将关系型数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。Hibernate正是实现了这种思想,达到了方便开发人员以面向对象的思想来实现对数据库的操作。 Hibernate在实现ORM功能的时候主要用到的文件有:映射类...

nnngu 255

【Hibernate框架】关联映射(一对一关联映射)

一、整理思路: 之前,小编总结过Mybatis的关联映射,接下来,再来总结一下hibernate的相关的关联映射,直接上图: 这张图,就是小编整理总结整个Hibernate的关联映射的一个大致思路。 二、名词解释“ 1、单向关联:很简单,就是一个对象依赖于另一个对象。 2、双向关联:两个对象互相依赖。 三、一对一(one-to-one)关...

265

hibernate使用关联映射的优劣比较:为什么用Hibernate时一定要做关联映射?

http://drinkjava.javaeye.com/blog/82107?page=2#comments读过上文以后有很多感慨:技术上的、心情上的。作者提出了一种迥异的、全新的hibernate使用方法。可是如果都这样做系统,那还怎么显示出对OR精通的各位牛人的价值呢?怎么能21世纪还是用ER模型呢? 所以作者的文章当然得不到javaeye各位"大拿"、“主流”的承认

凤影的专栏 3673

【Hibernate】——多对多关联映射

对比单向和双向关联映射,可以从查询加载的地方看出二者的不同,单向关联映射只能从循环遍历用户获得角色,但是双向关联映射既可以循环遍历用户获得角色,也可以循环遍历角色获得用户。 需要注意的是<key>中的column对应的是当前类在中间表中对应的字段,即对方想要的外键,而<many-to-manyclass="com.bjpowernode.hibernate.Role"column="role_id"/>中的column指示的是中间表中本类想要的外键。还要注意的是inverse的值只能

许小乖……是总攻 928

16. Hibernate 双向多对多关联映射

通过本节课程的学习,你将发现关联对象之间的微妙关系。相信这种关系对你更深入地认识HIbernate有很大的帮助。多对多双向关联映射中哪一方是关系维系者;级联操作与关系维系者。

这是一个web全栈开发的博客,取其精华去其糟粕,争取让大家一看就懂,一学就会,一用就成~ 965

Hibernate关联映射(一对多/多对多)

3.  Hibernate关联映射 上接Hibernate持久化类:https://blog.youkuaiyun.com/biggerchong/article/details/84260707 目录 3.  Hibernate关联映射 3.1 数据库表之间的关系 3.1.1 一对多关系 3.1.2 多对多关系 3.1.3 一对一关系(实际开发中使用较少) 3.2 实战Hibernate...

知飞翀的博客 1万+
上一篇: Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法
下一篇: 不能在本地计算机启动 apache2.2, apache2.2无法启动方法之一
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值