Hibernate5中利用关联关系操纵对象浅析——一对一关联关系

【四足机器人项目实战】四足机器人支撑腿反作用力规划之VMC解耦控制方法 系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、基于模型的工作空间控制框图二、原理三、缺点 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对未简化的动力学模型规划反作用力+运动学模型雅可比+虚功原理规划关节扭矩方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、基于模型的工作空间控制框图 . . 二、原理 基于机器人的动力学模 阅读详情

一对一关联关系

一对一关联关系在Hibernate5中的实现方式有两种:主键关联和外键关联。

1、主键关联
主键关联的重点:关联的两个表共享一个主键值,例如,一个单位在网上的一个系统中注册为会员,则会员有一个登陆账号,单位注册为会员的数据保存在表company中,每个会员的登陆账号保存在表login中;一个会员只有一个登陆账号,一个登陆账号只属于一个会员,两个表之间是一对一的对应关系。
两个表company和login对应的持久化对象分别为Company和Login,表之间是一对一的关系。他们共用一个主键值id,这个主键可由company表或者login表生成。

为了表示Company与Login之间的一对一关联关系,在Company与Login的映射文件Company.hbm.xml和Login.hbm.xml中都要使用 one-to-one 标记,代码如下所示:

Conpany.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 解析文件的DTD -->
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
	<!-- 映射文件的根目录 -->
	<hibernate-mapping package="PO">
		<class name="Company" table="company">
			<id column="ID" name="id" type="integer">
				<!-- 自增 -->
				<generator class="identity"></generator>
			</id>
			<property name="companyname" column="COMPANYNAME" type="string"></property>
			<property name="linkman" column="LINKMAN" type="string"></property>
			<property name="telephone" column="TELEPHONE" type="string"></property>
			<property name="email" column="EMAIL" type="string"></property>
			<!-- 映射Company与Login的一对一主键关联 -->
			<one-to-one name="login" cascade="all" class="PO.Login" lazy="false" 
				fetch="join" outer-join="true"></one-to-one>
		</class>
	</hibernate-mapping>

下面我再来对one-to-one中的一些属性进行一些解析:

(1)、lazy属性
lazy属性设定为true,表示延迟加载;设定为false,则表示立即加载。
延迟加载:表示Hibernate5在从数据库中取得数据组装好一个对象后,不会立即再从数据库取得数据组装此对象所关联的对象,而是等到需要的时候,才从数据库取得数据组装此关联对象。
立即加载:表示Hibernate5在从数据库中取得数据组装好一个对象后,会立即在从数据库去取得数据组装此对象所关联的对象。

(2)、cascade属性
该属性表明操作是否从父对象级联到被关联对象,它的取值可以有以下几种:

  1. none:在保存、删除或修改对象的时候,不对其附属对象(关联对象)进行级联操作。这是默认设置。
  2. save-update:在保存、更新当前对象时,级联保存、更新附属对象(临时对象、游离对象)。
  3. delete:在删除当前对象时,级联删除附属对象。
  4. all:所有情况下均进行级联操作,即包括save-update和delete操作。
  5. delete-orphan:删除和当前对象解除对象的附属对象。

(3)fetch属性
该属性的可选值是join和select,默认值为select。
当fetch属性设定为join时,表示连接抓取(Hibernate5通过在select语句中使用外连接来获得对象的关联实例或者关联集合)。
当fetch属性设定为select时,表示查询抓取(需要另外发送一条select语句抓取当前对象的关联实体或集合)。

Login.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 解析文件的DTD -->
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
	<!-- 映射文件的根目录 -->
	<hibernate-mapping package="PO">
		<class name="Login" table="login">
			<id column="ID" name="id" type="integer">
				<generator class="foreign">
					<param name="property">company</param>
				</generator>
			</id>
			<property name="loginname" column="LOGINNAME" type="string"></property>
			<property name="loginpwd" column="LOGINPWD" type="string"></property>
			<!-- 映射Company与Login的一对一关联 -->
			<one-to-one name="company" class="PO.Company" constrained="true"></one-to-one>
		</class>
	</hibernate-mapping>

Login.hbm.xml的主键id使用外键(foreign)生成机制,引用表company的主键作为login表的主键值。company在该映射文件的one-to-one 元素中进行了定义,它是Company对象的代号。one-to-one元素的属性constrained=“true” 表示login引用了company的主键作为外键。

2、外键关联
外键关联的要点:两个表各自有不同的主键,但其中一个表有一个外键引用另一个表的主键。例如,客户(Client)和客户地址(Address)是外键关联的一对一关系,他们在数据库中对应的表分别为client和address表。

Address.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 解析文件的DTD -->
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
	<!-- 映射文件的根目录 -->
	<hibernate-mapping package="PO">
		<class name="Address" table="address">
			<id column="ID" name="id" type="integer">
				<generator class="identity"></generator>
			</id>
			<property name="province" column="PROVINCE" type="string"></property>
			<property name="city" column="CITY" type="string"></property>
			<property name="street" column="STREET" type="string"></property>
			<property name="zipcode" column="ZIPCODE" type="string"></property>
			<!-- 映射Client与Address的一对一外键关联 -->
			<one-to-one name="Client" class="PO.Client" property-ref="address"></one-to-one>
		</class>
	</hibernate-mapping>

Client.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 解析文件的DTD -->
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
	<!-- 映射文件的根目录 -->
	<hibernate-mapping package="PO">
		<class name="Client" table="client">
			<id column="ID" name="id" type="integer">
				<generator class="identity"></generator>
			</id>
			<property column="CLIENTNAME" name="clientname" type="string"></property>
			<property column="PHONE" name="phone" type="string"></property>
			<property column="EMAIL" name="email" type="string"></property>
			<!-- 映射Client到Address的一对一外键关联,唯一的多对一,实际上变成了一对一关系 -->
			<many-to-one name="address" class="PO.Address" column="address" cascade="all"
				lazy="false" unique="true"></many-to-one>
		</class>
	</hibernate-mapping>

many-to-one 元素的name属性声明外键关联对象的代号,class属性声明该外键关联对象的类,column属性声明该外键在数据表中对应的字段名,unique属性表示使用DDL为外键字段生成一个唯一的标识。

学Simulink--基于新能源与储能系统的场景实例:压缩空气储能(CAES)系统热力学建模 本文介绍了使用Simulink对压缩空气储能(CAES)系统进行热力学建模的详细流程。重点讲解了系统各模块的设计方法,包括压缩机、储气装置、膨胀机和热交换器等核心组件的参数设置与计算模型。文章还提供了控制策略设计和仿真运行的具体步骤,通过建立MATLAB函数计算关键参数变化,并分析了系统性能评估指标。该建模方法可用于验证CAES系统的设计有效性,并为优化储能效率提供技术参考。全文采用模块化设计思路,为新能源与储能系统的仿真研究提供了实用案例。 阅读详情

相关推荐

FPGA 核脉冲梯形成型 Verilog 实现:从 MATLAB 到 50MHz 采样率部署

本文详细解析了FPGA实现核脉冲梯形成型的完整流程,从MATLAB仿真到50MHz采样率的Verilog硬件部署。重点探讨了梯形成型算法对负指数信号的优化处理,包括定点数量化、流水线架构设计及资源优化技巧,为核辐射探测与高能物理实验提供高效解决方案。

weixin_30920513的博客 390

Hibernate概念初探

概述 Hibernate是一个开源代码的对象关系映射(ORM)框架,是基于Java的持久化中间件,它对JDBC进行轻量级的对象封装。 它不仅提供了从Java类到数据表之间的映射,也提供了查询和事务机制。 相对于使用JDBC和SQL操作数据库,Hibernate大大减少了操作数据库的工作量。 作用 作为持久化的中间件,Hibernate采用ORM映射机制,实现Java对...

weixin_30616969的博客 294

共聚焦显微镜的光源、工作原理与选型

共聚焦显微镜作为科研与工业领域中重要的微观成像工具,凭借光源的精准适配性、光学切片技术的三维成像能力,以及对不同工业场景的定制化适配潜力,为半导体检测、工业部件分析、智能制造升级提供了关键技术支撑。深入理解其光源特性、工作原理与选型逻辑,能帮助工程师与技术人员精准匹配设备与生产需求,既保障微观检测的精度与效率,又为产业优化、技术创新筑牢微观观测的基础。

PhotonixBay的博客 1537

Hibernate级联关系总结

数据对象之间的关联关系有一对一,一对多及多对多三种。在数据库操作中,数据对象之间的关联关系使用JDBC处理很困难。例如,当删除一个班级的信息时,还要删除该班级的所有学生的基本信息。如果直接使用JDBC执行这种级联操作,会非常繁锁。Hibernate通过把实体对象之间的关联关系及级联关系在映射文件中声明,比较简单地解决了这类级联操作问题。 一对一关联关系的使用: 一对一关联关系在实际

yanting_shi的专栏 788

OPC UA 服务端的模拟工具及客户端工具

详细介绍如何使用 Prosys OPC UA Simulation Server 作为 OPC UA 服务端的模拟工具来生成数据模型,并使用 Softing OPC UA Client 作为客户端工具,直观地查看和验证模拟生成的数据。

weixin_44462773的博客 9872

WSL2网络配置全攻略:如何让Windows和Linux子系统互相访问端口(附防火墙设置)

本文深入解析WSL2的网络架构,并提供详细的端口互通配置指南。针对WSL2与Windows宿主机之间常见的网络访问问题,文章从原理出发,逐步讲解如何识别网络环境、配置Windows防火墙规则、调整服务监听地址,并介绍镜像网络模式等进阶优化方案,最终实现稳定可靠的双向端口访问。

sony5的博客 1148

关联关系操纵对象总结

使用关联关系操纵对象:         两个实体对象之间的关系有4种:一对一,一对多,多对一和多对多。对于关联关系的配置有如下4个值需要注意:l  本身类的主键值idl  关联类的主键值idl  的值l  的值其中,本身类的主键id和关联类的主键id不用使用column去指定,Hibernate会自己识别。并且有一个规则:的值和本身类的主键id对应;的值和关联类的主键id对应。一对一比较简单,因为没有column属性。一对多需要指定自己的主键值和关联类的哪一个列值相对应,所以要设置。多对一关系中,“多”的这

867

【具身智能】感知 × 决策 × 执行:一个智能体的认知闭环怎么搭?

构建一个真正能在现实世界中运作的具身智能体,并不是简单地拼接“视觉 + 控制器 + 动作模块”就能完成的,它必须是一个**认知闭环结构**:能感知环境、理解状态、制定策略、执行动作,并从结果中学习反馈。 本讲将深入剖析具身智能的三大核心支柱:**感知系统、决策系统、执行系统**,并解析它们如何协同构建出一个“能观察、能思考、能行动”的智能体。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3266

第五章 使用Hibernate完成对象持久化

Hibernate是一个优秀的Java持久化层解决方案 , 是当今主流的对象- 关系映射工具. 持久化: 程序运行的时候,有些程序的数据保存在内存中,程序退出的时候, 这些数据就不复存在了. 所以,我们成这些数据的状态为瞬时的(transistent). 有些数据在程序退出的时候, 还以文件的形式存在于存储设备中, 我们成这些数据的状态是持久的(Persis...

tjzero_sapce的专栏 221

基于锁相环的高精度频率分频器simulink建模与仿真

在现代电子系统中,高精度频率分频器扮演着至关重要的角色。它能够提供精确的频率参考,广泛应用于通信、仪器仪表、航空航天等领域。基于锁相环的高精度频率分频器具有结构简单、性能稳定等优点,成为了研究的热点。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 776

【AI编程】Qoder AI 编程工具从部署到深度使用实战详解

Qoder AI 编程工具从部署到深度使用实战详解

congge 8342

一对一关联映射的两种实现方式(主键关联映射 / 唯一外键关联映射)

实体之间的联系 联系(Relationship) 现实世界中事物内部以及事物之间的联系在信息世界中 反映为实体内部的联系和实体之间的联系。 实体间联系可分为: 一对一联系(1:1);  一对多联系(1:n); 多对多联系(m:n)。 两个实体型之间的联系 一对一联系(1:1)   定义: 如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实...

lkfmiaomiao的博客 1400

红队攻防渗透技术实战流程:云安全之云原生安全:特权模式和挂载模式

红队云攻防实战1. 什么是云 1. 什么是云

HACKONE的博客 573

Hibernate利用关联关系操纵对象

利用关联关系操纵对象数据对象之间关联关系有一对一、一对多及多对多关联关系。在数据库操作中,数据对象之间的关联关系使用JDBC处理很困难。本节讲解如何在Hibernate中处理这些对象之间的关联关系。本节使用到4个类,它们分别是Student(学生)、Card(学生证)、Group(班级)和Course(课程),它们之间的关联关系如图1-1所示。这些实体存在级联(cascade)问题。例如,当删

lenotang的专栏 5167

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

利用关联关系操纵对象

利用关联关系操纵对象 数据对象之间关联关系有一对一、一对多及多对多关联关系。在数据库操作中,数据对象之间的关联关系使用JDBC处理很困难。本节讲解如何在 Hibernate中处理这些对象之间的关联关系。本节使用到4个类,它们分别是Student(学生)、Card(学生证)、Group(班级)和 Course(课程),它们之间的关联关系如图9-1所示。这些实体存在级联(cascade...

开心就好 246

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Hibernate数据查询 利用关联关系操纵对象 Hibernate事务 Hibernate的Cache管理

前两讲讲解了Hibernate的基础知识,使用这些知识只能构建一些比较简单的Hibernate应用。本讲将一步讲解Hibernate的一些比较高级的知识和技术,利用它们可以构建高效、复杂的Hibernate应用。本讲要点:http://book.youkuaiyun.com/bookfiles/604/10060419566.shtmll         Hibernate数据查询l       

溺水的鱼 - Later equals never. 2431

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

hibernate5(6)操纵对象入门[1]Session缓存

java对象在JVM中的存活条件在java中,我们使用User user = new User();来创建一个java对象时,JVM会为其分配一块内存空间,此时,这个对象被变量“user”引用,那么它就会一直存在于内存中,而如果我们我们的“引用者user”升级了,User user = new VipUser()。那么原来new User()不再被任何变量引用,它就会结束自己的生命周期,然后会被JV

总结沉淀 2325

Hibernate中关联关系中常用的属性

cascade属性  问题:如何实现添加部门的同时自动添加员工? 解析:可以使用cascade(级联)方式 Cascade取值:    None,save-update,delete和all    none:当Session操纵当前对象时,忽略其他关联的对象。它是cascade属性的默认值.   Save-update:当通过Session的save()、update()及saveOr

WuCunJian 400

HIbernate逍遥游记——(三)通过Hibernate操纵对象

主题:Session缓存中的对象成为持久化对象。持久化对象和数据库中的相关记录对应,Session能够在某些时间点,按照缓存中对象的变化来执行相关的SQL语句,来同步更新数据库,这一过程被称为清理缓存(flush)。Hibernate中对象的4种状态:持久化状态、临时状态、游离状态、删除状态。

hi! 1316

如何利用spring操纵对象

如何利用spring操纵一个对象呢。这是spring的最简单的一个作用。 我感觉一共有3步骤” 第一:写一个spring的xml。 第二:实例化spring容器。 第三:从xml里面获得具体的bean(也就是实际要操纵的对象)   首先引入jar就不说了。 接着写一个spring.XML xml version="1.0"encoding="UTF-8"?> beans xm

飞鱼 1169

学习Hibernate5这一篇就够了

目录第一章 Hibernate5快速入门1.1、Hibernate5概述1.2、Hibernate5下载1.3、Hibernate5工程搭建1.4、Hibernate5测试代码1.5、Hibernate5工具类第二章 Hibernate5核心配置2.1、两种配置方式2.1.1、属性文件的方式(了解)2.1.2、xml文件的方式(掌握)2.2、核心配置讲解2.2.1、核心的配置2.2.2、映射的配置2.3、核心对象讲解2.3.1、Configuration2.3.2、SessionFactory2.3.3、S

轻松的小希 8080

使用Hibernate进行对象的关系映射

使用Hibernate进行对象的关系映射原文连接:http://www.meagle.com:8080/hibernate.jsp    Hibernate是业界比较推崇的ORM(o/r mapping),目前的版本已经非常稳定和成熟,而且的他的文档也极其丰富。    Http://www.jdon.com和http://www.chinaxp.com 这两个技术网站对hibernate的

隐隐约约出现平常人诞生的故乡 1985

通过Hibernate操纵对象(上)

Session的缓存        session的缓存为一级缓存,只在当前工作空间有效(一个工作空间一般是一个事务)。当session的save()方法持久化一个对象时,对象会加入到缓存中,即时不在引用这个对象,但是只要session没清空缓存,这个对象还在生命周期。       session的get方法从数据库中读取对象,如果session的缓存中存在,就直接用缓存中的对象,不去数据库读

小魏的博客 379

Java第三阶段之Hibernate4定义、CRUD操作、映射对象标识符(OID)、关联关系一对多映射

三. Struts2 拦截器 一.拦截器简介 Struts2 拦截器是在访问某个 Action 或 Action 的某个方法,字段之前或之后实施拦截,并且 Struts2 拦截器是可插拔的,拦截器是AOP的一种实现. 优点:通用功能的封装,提供了可重用性; 比如:进去的时候给Action的字段设置值,出去的时候获取字段的值。 二.Struts2 预定义拦截器&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;拦截器栈 action 中的p...

AthlenaA的博客 567
上一篇: 基于Struts2+Hibernate5的学生信息管理系统
下一篇: 一对一关联关系实例
monkey_wei
博客等级 码龄8年 62粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值