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

vivado 编译ADI AD9361 TCL脚本生成hdl工程 (4)输入"source ../../scripts/adi_make.tcl"命令(仅双引号内部命令,不包含双引号),个人理解:该命令用来加载当前所需要编译工程所需要各功能模块的信息,因为每个工程需要不同的功能模块,比如有的需要gpio模块,有的不需要gpio模块,这些模块上前面路径的library也同样以TCL脚本形式存在,当有需要时才进行编译,怎么知道当前工程需要什么模块呢就是通过"source ../../scripts/adi_make.tcl"(仅双引号内部命令,不包含双引号)命令实现。 阅读详情

一对一关联关系

一对一关联关系在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为外键字段生成一个唯一的标识。

三轴加速度传感器计步算法优化:动态阈值与滤波技术的实践应用 本文深入探讨了三轴加速度传感器计步算法的优化实践,重点分析了动态阈值调整与高效滤波技术如何协同提升计步精度与鲁棒性。通过对比均值滤波的局限,引入向量模长计算、多级自适应阈值以及状态机判决逻辑,并结合代码示例,为嵌入式及移动应用开发者提供了应对复杂运动场景的实用解决方案。 阅读详情

相关推荐

软件测试工程师笔试题

这里写目录标题全套软件测试面试笔试题(附答案)二、选折三、添空四、简答(资料是搜集整理的,感谢前辈的解题)无1.区别阶段评审的与同行评审2.什么是软件测试3. 简述集成测试的过程4 怎么做好文档测试5 白盒测试有几种方法6 系统测试计划是否需要同行审批,为什么7Alpha 测试与 beta 的区别8 比较负载测试,容量测试和强度测试的区别。性能测试从使用方便的角度来说,9 测试结束的标准是什么?10 描述软件测试活动的生命周期?11 软件的缺陷等级应如何划分? 软件测试工程师笔试题(附答案) 全套软件测试面

m0_46446002的博客 2549

Hibernate概念初探

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

weixin_30616969的博客 294

S参数反演法

等效介质理论模型— 利用S参数反演法提取超材料结构的等效参数 等效介质理论模型—利用S参数反演法提取超材料结构的等效参数 S参数反演法,即利用等效模型的传输矩阵和S参数求解超材料结构的等效折射率n和等效阻抗Z的过程。本文对等效介质理论模型进行了详细介绍,并提供对应代码。 超材料的传输矩阵 超材料结构的传输矩阵函数为: 其中,d 为等效光学活性材料的厚度,n 为折射率,Z 表示阻抗。 S参数和传输矩阵T 超材料结构的S参数和传输矩阵T满足下列方程: 利用以上两式,可以得到等效折射率n和相对阻抗的表达式

weixin_43962864的博客 1万+

Hibernate级联关系总结

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

yanting_shi的专栏 788

从零搭建风电场:手把手教你用WAsP+WindPRO完成风资源评估全流程

本文详细介绍了从零开始搭建风电场的全流程,重点讲解如何使用WAsP和WindPRO进行风资源评估和风场布局优化。内容包括软件配置、数据采集规范、风图谱建模实战、机组选型策略以及常见问题解决方案,帮助工程师掌握风电开发的核心技术,提升项目成功率。

year5的博客 371

2、欧洲期权的赫斯顿模型

本文详细介绍了赫斯顿随机波动率模型在欧洲期权定价中的应用。模型通过引入随机方差过程,克服了布莱克-斯科尔斯模型中波动率恒定的局限性,更贴近市场实际。文章阐述了模型的动态结构、风险中性转换、期权定价公式及其半封闭解的计算方法,并提供了基于VBA的数值实现方案。通过梯形法则与高斯积分等数值方法对比,分析了不同积分策略的精度与效率。同时验证了当波动率为零时,赫斯顿模型退化为布莱克-斯科尔斯模型的一致性。最后讨论了模型的优势、挑战及实际应用建议,强调了数值积分稳定性和参数估计的重要性。

tequila的博客 350

关联关系操纵对象总结

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

867

智驾车载以太网(18)-switch之报文转发和vlan处理流程

本文详细解析了交换机中报文处理和转发流程:1)通过目标MAC查找转发端口,源MAC创建ARL条目;2)VLAN标签处理包括tagged/untagged帧判断、默认VID标记等5种处理方式;3)完整转发流程包含CRC校验、IQ封装、VLAN和ARL表查询、端口向量计算及优先级队列发送。文中还涉及TCAM修改VLAN、802.1q多种模式处理等细节,省略了流量控制等次要流程。该过程实现了基于MAC和VLAN的高效二层交换。

mitugaoyang1993的博客 43

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

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

tjzero_sapce的专栏 221

如何使用 ABAP 代码调度一个 ABAP 程序,让其以后台作业的方式运行

笔者之前的教程,介绍了如何使用 SM36 一系列事务码,将一个 ABAP 程序,调度成以后台作业方式运行的详细步骤。 38. 如何让 ABAP 报表在后台作业的模式下运行 大家如果照着上述文章的步骤走一遍,会发现这些手动执行的步骤还是有些繁琐的。 有没有可能让这一切都自动化起来,即通过 ABAP 代码去完成呢?当然可以。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1944

MOS管驱动电路设计全攻略

MOS管驱动电路设计全攻略

让你爱上电路设计 3634

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

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

lkfmiaomiao的博客 1400

OceanBase容量统计:租户、数据库、表大小

🍎 数据库版本:OceanBase V4。

Sebastien23的博客 1404

Hibernate利用关联关系操纵对象

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

lenotang的专栏 5167

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

利用关联关系操纵对象

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

开心就好 246

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

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

溺水的鱼 - Later equals never. 2431

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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、付费专栏及课程。

余额充值