博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSH——Hibernate初学者之旅(三)
阅读量:4263 次
发布时间:2019-05-26

本文共 2995 字,大约阅读时间需要 9 分钟。

      上次我们说到了hibernate映射关系中的一对一关系,可是,我们知道,在实际应用中,我们最常遇到的还是一对多的关系。所以,今天我们来看看一对多关系的映射是怎么做到的。

一、实体

//人public class Person1nfk implements Serializable {
private int personid; private String name; private int age; private Set addresses=new HashSet();
//地址public class Address1nfk implements Serializable {
private int addressid; private String addressdetail;

二、外键–关联映射法

1、单向

  • 一对多

一个人(Person)对应多个地址(Address),比如家庭地址、公司地址。

      解说1: inverse的真正作用就是指定由哪一方来维护之间的关联关系。当一方中指定了“inverse=false”(默认),那么那一方就有责任负责之间的关联关系。

      解说2: Set集合属于无序集合,映射时只需指定Set集合的key(外键列)、element(元素列),以外键列、元素列(非空)作为联合主键;元素列为空时,Set集合表没有主键。

  • 多对一

多个人(Person)对应一个地址(Address)。

2、双向

  • 一对多

一个人(Person)对应多个地址(Address)。

      解说1: inverse=true的含义: 由双向关联另一方维护该关联,己方不维护该关联(只能进行查询操作)。在上代码中,由Address1nfk_sx类这方维护该关系。

      解说2:
      Inverse:负责控制关系,默认为false,也就是关系的两端都能控制,但这样会造成一些问题,更新的时候会因为两端都控制关系,于是重复更新。一般来说有一端要设为true。
      Cascade:负责控制关联对象的级联操作,包括更新、删除等,也就是说对一个对象进行更新、删除时,其它对象也受影响,比如我删除一个对象,那么跟它是多对一关系的对象也全部被删除。
      解说3: fetch抓取策略:默认是fetch=”select”,另外发送一条select语句抓取当前对象关联实体或集合;当配置fetch=”join”,hibernate会通过select语句使用外连接来加载其关联实体或集合,此时lazy会失效

三、连接表–关联映射法

1、单向

  • 一对多

一个人(Person)对应多个地址(Address),比如家庭地址、公司地址。

  • 多对一

多个人(Person)对应一个地址(Address)。

2、双向

总结:

      我们通过一对多映射关系的学习,了解了one-to-many和many-to-one的使用,那么下次我们将继续介绍many-to-many的映射关系。

转载地址:http://bymei.baihongyu.com/

你可能感兴趣的文章
View绘制01-Android渲染系统中的View
查看>>
View绘制02-View生命周期
查看>>
View绘制系列(3)-自定义View简介
查看>>
View绘制系列(5)-Canvas基础图形绘制
查看>>
Android横竖屏切换
查看>>
判断SD是否存在及其容量查询
查看>>
linux查看文本的5+1种方式
查看>>
Linux 查看服务器开放的端口号
查看>>
端口状态说明 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT
查看>>
阿里云---阿里云服务器ECS开放8080端口
查看>>
Linux如何查看端口状态
查看>>
3种关闭linux系统端口方法
查看>>
pm2常用的命令用法介绍
查看>>
http状态码301和302详解及区别——辛酸的探索之路
查看>>
强大的原生DOM选择器querySelector和querySelectorAll
查看>>
clientWidth offsetWidth innerWidth 区别(窗口尺寸 汇总)
查看>>
【HTTP】Fiddler(一) - Fiddler简介
查看>>
Fiddler实现手机抓包——小白入门
查看>>
Fiddler屏蔽某些url的抓取方法
查看>>
浅析CSS中的overflow属性
查看>>