java hibernate 表关联_Hibernate多表关联

一、多对一进行关联(多个学生对应同一间宿舍)---学生是主体,宿舍是附体,关联关系在主体学生中设置,在学生类中设置宿舍类,由于宿舍类只有一个可以直接用类来设置,在映射学生类(User)中包含宿舍这个类(Room),在映射配置文件(User.hbm.xml)中定义

哪个是主体类就在哪个配置文件定义关联关系.

cascade属性:表示关联对象的持久化,该属性也要设置在主体中,作用就是当主控方执行操作时,关联对象(被动方)是否同步执行同一操作.

cascade的值:all:表示所有情况下都进行级联操作.

none:所有情况下都不进行级联操作

save-update:在执行save-update时进行级联操作.

delete:在执行delete时进行级联操作.

注意:使用cascade自動持久化時,會先檢查被關聯物件的id屬性,未被持久化的物件之id屬性是由unsaved-value決定,預設是null,如果您使用long這樣的原生型態(primitive type)時,則必須自行指定預設值.

例如:

如果您不想額外設定unsaved-value資訊,則可以將long改為Long,這可以符合預設的unsaved-value為null的設定 .

二、一对多进行关联(一间宿舍对应多个学生)---宿舍是主体,学生是附体,关联关系在主体宿舍中设置,由于要在宿舍类中设置学生类,一个宿舍包含多个学生,所以在宿舍类中要用Set类来进行设置,用set类(private Set users = new HashSet();)来存储多个学生类,在映射宿舍类(Room)中要包含这个节点,用来与user相关联

例如:

name:表示属性,table:表示关联的表名,key:表示通过什么字段进行关联,:表示关联类。这里也可以使用cascade属性。

三、在表关联的设计中,不论是一对多还是多对一,都要将关联字段设置在多的那一方。

例如:user表格和room表格,要将关联字段room_id设置在user表格中。

四、一对一进行关联(一个人只有一个房间,一个房间也只有一个人)。

可以通过2中方式进行关联:

(1)、通过外键进行关联:在多对一的例子中就是通过外键进行关联的.

在user-room的设置中(user.hbm.xml):

column="ROOM_ID"

class="onlyfun.caterpillar.Room"

cascade="all"

unique="true"/>

其中unique表示限制一個User有一獨有的 Room,这只是单向的,说明一个user只有一个room.

在room-user的设置中(room.hbm.xml):

class="onlyfun.caterpillar.User"

property-ref="room"/>

这样就完成了双向的一对一关联,property-ref告诉hibernate,查询出user并将其参考至room。

(2)、通过主键进行关联:限制兩個資料表的主鍵使用相同的值,如此一個User與Room就是一對一關係

user.hbm.xml:

class="onlyfun.caterpillar.Room"

cascade="all"/>

room.hbm.xml:

class="onlyfun.caterpillar.User"

constrained="true"/>

使用constrained="true"告訴Hibernate參考至User的主鍵

五、双向关联,就是将一和二结合起来,如果將關聯的維護交給User的話會比較容易,因為每個User都對應至一個Room,在儲存時並用像Room一樣必須對Set中的每個物件作檢查,為了將關聯的維護交給User,我們可以在Room.hbm.xml中的修改,加上inverse="true",表示將關聯的維護「反過來」交給User作例如:             

在設立雙向關聯時,關聯由多對一中「多」的哪一方維護,會比由「一」的哪一方維護來的方便,在Hibernate可以藉由inverse來設定,不設定inverse基本上也可以運行,但是效能會較差

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

getchar、putchar、puts、gets

getchar(字符) 输入获取一个字符 putchar(字符) 输出控制台一个字符 scanf()格式化输入 printf() 格式化输出 gets(arr) 输入一个字符串给已经声明的数组arr puts(字符串或者字符数组名)输出一个字符串 转载于:https…

关于异性朋友

听到别人在问一个问题:“可是你在大学里又有几个很要好的女性朋友?”   想到自己,却是一个没有。奇怪啊,我虽然木讷,但还不到白痴的地步,怎么会一个没有呢?思讨一下,明白了&#…

java全文检索工具_全文检索工具elasticsearch:第三章: Java程序中的应用

搭建模块创建二个项目gmall-list-service的appliction.properties:server.port8073spring.datasource.urljdbc:mysql://localhost:3306/gmall?characterEncodingUTF-8spring.datasource.usernamerootspring.datasource.passwordrootmybatis.configuration.map-underscore-to-c…

win10 多用户登陆

win10 多用户登陆 一般的直接下载就可以用了。 核心参考链接github 支持 1903 支持最新版本可以需要这个1903支持项参考页面 上述页面的下载文件页面1903支持页面 关于上述链接下载文件readme的解释 RDP Wrapper Library Updater --------------------------- <Add support …

DNN(DotNetNuke)注册用户终于突破10万人了,其3.0也终于跳票了...

是的&#xff0c;尽管我很不愿意&#xff0c;但的确是跳票了&#xff0c;或许跳票是软件开发的惯例了。据说会在圣诞节那天发布&#xff0c;也可能是月底&#xff0c;没有人知道&#xff1a;http://www.asp.net/Forums/ShowPost.aspx?tabindex1&PostID734458 不过&#xf…

java虚拟机MyEclipse_Eclipse和MyEclipse运行环境java虚拟机jvm设置,自己设置jre

Eclipse运行环境java虚拟机jvm设置&#xff0c;自己设置jre浅谈Eclipse寻找JVM(JRE)的顺序机制Eclipse也是一个普通的Java程序&#xff0c;因此必须有一个JRE做为运行环境。如果你的机器上没有安装任何JRE(或者JDK&#xff0c;本文不做二者的区分)&#xff0c;那么点击eclipse.…

初探机器学习之使用百度EasyDL定制化模型

一、Why 定制化模型 一般来说&#xff0c;各大云服务厂商只会提供一些最常见通用的AI服务&#xff0c;针对具体场景的AI应用则需要在云服务厂商提供的服务之上进行定制。例如&#xff0c;通常的图像识别只能做到分析照片的主题内容&#xff0c;而我的需求是给定指定场景的图片&…

Microsoft SQL Server Desktop Engine安装过程中遇到的问题(2)

今天下午没课&#xff0c;又在玩电脑了&#xff0c;想起昨天没解决的问题&#xff0c;心里有点不爽&#xff0c;遇到问题就要解决嘛^_^。 我把昨天装的study实例卸载了&#xff0c;仔细研究了一下自述文件&#xff0c;按照里面的说明&#xff0c;我在C盘根目录新建了一个名为 M…

java面向对象基础代码_JAVA基础知识点之Java面向对象

特点:1:将复杂的事情简单化。2:面向对象将以前的过程中的执行者&#xff0c;变成了指挥者。3:面向对象这种思想是符合现在人们思考习惯的一种思想。过程和对象在我们的程序中是如何体现的呢&#xff1f;过程其实就是函数&#xff1b;对象是将函数等一些内容进行了封装。匿名对象…

OCP-052考试题库汇总(4)-CUUG内部解答版

Which four statements are true about truncating a table? A)Any insert triggers for the table will be executed. B)Any of the table’s indexes are also truncated. C)Any delete triggers for the table will be executed. D)All table storage can be retained. E)O…

mysql innodb4大特征_MYSQL中InnoDB特性浅谈

许久没有更新博客,上周末放假把网易大牛姜sir的著作MYSQL技术内幕InnoDB存储引擎又翻阅了一番,对当前工作的InnoDB特性有了一些新的认识,下面谈谈自己的读后感.1. InnoDB的体系架构由一系列后台线程,内存池和文件组成,这点与其他DB有相似之处. 在内存中划分了一块区域,即缓冲池…

微享:快速分享网页到新浪微博

分享到新浪微博 *:博客园的编辑程序会自动给javascript的链接加上前缀&#xff0c;使得链接错误。版本&#xff1a;&#xff11;.0 简介&#xff1a; 书签栏工具&#xff0c;javascript代码&#xff0c;用于分享网页内容到新浪微博。 安装&#xff1a;Firefox&#xff0c;safa…

VFP下利用API调用帮助

VFP下利用API调用帮助 Declare integer HtmlHelp IN hhctrl.ocx integer hwndCaller, string pszFile, integer uCommand, integer dwData HtmlHelp(0, [mk:MSITStore:WINPY.CHM::/html/winp48fm.htm],1,0)转载于:https://www.cnblogs.com/77543/archive/2005/01/13/91583.htm…

java重命名package_AndroidStudio怎么重命名java目录下的包名(如cn.zsn.app)

【声明&#xff1a;】本文是作者(蘑菇v5)原创&#xff0c;版权归作者 蘑菇v5所有&#xff0c;侵权必究。本文首发在简书。如若转发&#xff0c;请注明作者和来源地址&#xff01;未经授权&#xff0c;严禁私自转载&#xff01;区分包名和applicationid的区别&#xff1a;这里的…

OCP-052考试题库汇总(5)-CUUG内部解答版

Examine these attributes for the profile assigned to USER1 whose password is oracle_4U. • PASSWORD_REUSE_MAX is 5. • PASSWORD_REUSE_TIME is 10. • PASSWORD_GRACE_TIME is 15. Which two conditions must be met for USER1 to reuse oracle_4U? A)At least 5 day…

笔记本鼠标乱跑!不知何故!

开始怀疑是病毒&#xff0c;现在安装了norton还是出现。哪位网友知道是怎么回事情吗&#xff1f;

java in thread main_JAVA报错:Exception in thread main……求帮助?

问题描述:题目要求&#xff1a;(1)创建MaxArray类&#xff1a;声明1个一维数组的成员变量&#xff0c;例如&#xff1a;int array[ ]; //一维数组设置有参构造方法&#xff0c;如&#xff1a;MaxArray(int n){ …… } //有参构造方法&#xff0c;为成员变量创建长为n的一维数组…

[ZZ]MVC设计模式

1 前言   用户界面&#xff0c;特别是图形用户界面&#xff0c;承担着向用户显示问题模型和与用户进行操作和I/O交互的作用。用户希望保持交互操作界面的相对稳定&#xff0c;但更希 望根据需要改变和调整显示的内容和形式。例如&#xff0c;要求支持不同的界面标准或得到不同…

OCP-052考试题库汇总(6)-CUUG内部解答版

Examine these attributes for the profile assigned to USER1 whose password is oracle_4U • PASSWORD_REUSE_MAX is 5 • PASSWORD_REUSE_TIME is 10 • PASSWORD_GRACE_TIME is 15 Which two are true? A)The USER1 password must not have been used for at least 10 da…

2019.7.25

T1.匹配 一看就是KMP的嘛&#xff0c;但是忘了。 啊&#xff0c;要背模板的啦&#xff01; 啊&#xff1f;&#xff01;暴力72分&#xff1f;&#xff01;&#xff1f;&#xff01;&#xff1f;&#xff01; Get! 正解就是一般的KMP&#xff0c;把a串与b串接起来&#xf…