Hibernate的学习总结(数据关联)

 Hibernate中的数据关联主要分为三大类:

1对1: 一个人对应一个身份证

1对多,多对1:  一个人有很多联系地址 ,多个用户拥有一个权限

多对多:  一个学生可以对应选很多门课,一门课可以对应有许多学生

 

一.1对1关系 --主键关联

一个人对应一个身份证

表结构:

-- 创建表
CREATE TABLE person
(
 id VARCHAR(32) NOT NULL PRIMARY KEY ,
 name VARCHAR(20) NOT NULL ,
 age int
) ;
CREATE TABLE idcard
(
 id VARCHAR(32) ,
 serial VARCHAR(18) NOT NULL ,
 expiry int ,
 FOREIGN KEY(id) REFERENCES person(id) ON DELETE CASCADE
) ;

 

Person.java

 

IDCard.java

 

Person.hbm.xml 关联主表

 

 

Idcard.hbm.xml 关联从表

 

插入代码示例:

 

二. 1对多,多对1关系 --外键关联

1.1对多关系

 一个人有很多联系地址

表结构

CREATE TABLE person
(
 pid VARCHAR(32) NOT NULL PRIMARY KEY ,
 name VARCHAR(20) NOT NULL ,
 age INT
) ;

CREATE TABLE address
(
 aid VARCHAR(32) NOT NULL PRIMARY KEY ,
 name VARCHAR(50) NOT NULL ,
 zipcode VARCHAR(10) NOT NULL ,
 pid VARCHAR(32) ,
 FOREIGN KEY (aid) REFERENCES person(pid) ON DELETE CASCADE
) ;

 

Person.java

 

Address.java

 

Person.hbm.xml  关联主表

 

Address.hbm.xml 关联从表

 

 2.多对一关系

多个用户拥有一个权限

 

表结构

-- 创建表
CREATE TABLE person
(
 id VARCHAR(32) PRIMARY KEY NOT NULL ,
 name VARCHAR(20) NOT NULL ,
 age INT ,
 gid VARCHAR(32)
) ;

 

CREATE TABLE TGROUP
(
 gid VARCHAR(32) PRIMARY KEY NOT NULL,
 name VARCHAR(20)
) ;

 

Person.java

 

TGroup.java

 

Person.hbm.xml 关联主表

 

TGroup.hbm.xml 关联从表

 

一对多是将映射关系写在一的一端,多对一是将映射关系写在多的一端。一对多和多对一的映射策略是一致的,都是通过在"多"的一端添加一个外键指向"一"的一端,只是站的角度不同。

不管多对一还是一对多,都是在"多"的一端添加一个外键指向"一"的一端,只不过是多对一是在多的一端为其自己添外键,而一对多则是在一的一端为多的一端添加外主键。

 

 

3.多对多关系

一个学生可以对应选很多门课,一门课可以对应有许多学生

 

表结构

CREATE TABLE person
(
 pid VARCHAR(32) NOT NULL PRIMARY KEY ,
 name VARCHAR(20) NOT NULL ,
 age INT
) ;
CREATE TABLE server
(
 sid VARCHAR(32) NOT NULL PRIMARY KEY ,
 name VARCHAR(20) NOT NULL
) ;
CREATE TABLE person_server
(
 pid VARCHAR(32) ,
 sid VARCHAR(32) ,
 FOREIGN KEY (pid) REFERENCES person(pid) ON DELETE CASCADE ,
 FOREIGN KEY (sid) REFERENCES server(sid) ON DELETE CASCADE
) ;

 

Person.java

 

Server.java

 

Person.hbm.xml

 

Server.hbm.xml

 

 

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值