Hibernate一对多和多不多的操作
来源:互联网 发布:淘宝卖家活动报名 编辑:程序博客网 时间:2024/06/05 16:17
1、hibernate删除前为什么一定要查询
(1)查出来是要看看有没有关联的对象,为级联删除做准备。
(2)机制如此,删除方法中放的是实体类。
2、一对多时的级联和外键的维护
(1) 外键维护 inverse属性:是否放弃维护关联关系
true: 放弃维护
false(默认值):维护关系
<set name="linkMen" inverse="true" >
<key column="lkm_cust_id" ></key>
<one-to-many class="LinkMan" />
</set>
一对多时,只能是一的一方放弃外键的维护权
一个是多的多方没有inverse 这个属性,
如果让一的一方维护外键的关系,会造成生成多2条update语句
因为外键就在多的一方,所以让多的一方维护外键不会造成多生成sql语句的情况
(2)级联操作
cascade属性:
save-update: 级联保存或更新
delete: 级联删除
all: 级联保存或更新+级联删除
级联删除不建议用,
级联保存省了一部分代码,不一定要用级联保存
多对多表的级联和外键的维护,每一方级联和外键维护都可以
但是注意的一点外键维护时,以主的一方进行外键维护。
映射文件的配置
一对多的映射文件的配置
单表的一方
<!-- 一对多
name属性: 表达一对多关系集合的名称
column属性: 表达一对多关系的外键列名
class属性:描述"我"与谁是一对多关系
-->
<!-- 级联操作
cascade属性:
save-update: 级联保存或更新
delete: 级联删除
all: 级联保存或更新+级联删除
-->
<!-- inverse属性:是否放弃维护关联关系
true: 放弃维护
false(默认值):维护关系
-->
<set name="linkMen" inverse="true" cascade="save-update">
<key column="lkm_cust_id" ></key>
<one-to-many class="LinkMan" />
</set>
多表的一方
<!-- 多对一关系映射
name属性: 表达多对一关系的属性名
column属性: 表中表达关系的外键列名
class属性:
-->
<!-- 级联操作
cascade属性:
save-update: 级联保存或更新
delete: 级联删除
all: 级联保存或更新+级联删除
-->
<many-to-one name="customer"
column="lkm_cust_id"
class="Customer" />
多对多
<!-- 多对多
name属性: 表达一对多关系集合的名称
table属性:中间表表名
key => column属性: 表达多对多关系的外键列名.映射文件所在对象外键
class属性:描述"我"与谁是一对多关系
many-to-many => column属性: 表达多对多关系的外键列名,对方对象外键
-->
<!-- inverse属性:是否放弃维护关联关系
true: 放弃维护
false(默认值):维护关系
-->
<!-- 级联操作
cascade属性:
save-update: 级联保存或更新
delete: 级联删除
all: 级联保存或更新+级联删除
-->
<set name="users" table="sys_user_role" inverse="true" >
<key column="role_id" ></key>
<many-to-many class="User" column="user_id" ></many-to-many>
</set>
<!-- 多对多
name属性: 表达一对多关系集合的名称
table属性:中间表表名
key => column属性: 表达多对多关系的外键列名.映射文件所在对象外键
class属性:描述"我"与谁是一对多关系
many-to-many => column属性: 表达多对多关系的外键列名,对方对象外键
-->
<!-- inverse属性:是否放弃维护关联关系
true: 放弃维护
false(默认值):维护关系
-->
<!-- 级联操作
cascade属性:
save-update: 级联保存或更新
delete: 级联删除
all: 级联保存或更新+级联删除
-->
<set name="roles" table="sys_user_role" >
<key column="user_id" ></key>
<many-to-many class="Role" column="role_id" ></many-to-many>
</set>
- Hibernate一对多和多不多的操作
- Hibernate的一对多操作
- Hibernate一对多操作
- Hibernate一对多多对一的相关配置和操作
- Hibernate进行一对多操作
- Hibernate 一对多双向操作
- Hibernate一对多关联操作
- Hibernate的一对多
- 关于hibernate一对多关系的对象操作
- hibernate中hbm的级联操作(一对多)
- Hibernate hiberante query language(一对多的操作)
- hibernate的级联保存操作(一对多)
- Hibernate的一对多增改级联操作
- Hibernate一对多,多对多操作
- Hibernate一对多双向级联操作
- 使用Hibernate操作一对多关系
- hibernate 一对多表配置及操作
- Hibernate的一对多关联
- 页面滚动的时候自动切换导航栏
- Maven学习笔记 --- Maven入门笔记四
- java特殊注释
- SSM中文件上传与下载
- 【bzoj1698】[Usaco2007 Feb]Lilypad Pond 荷叶池塘
- Hibernate一对多和多不多的操作
- Android中获取字符串长度、宽度(所占像素宽度)的方法
- 1041. Be Unique (20)
- cat
- 代码之髓读后感——名字&作用域&类型
- 仿微信底部菜单栏(ViewPager+ImagerView+TextView)
- Druid简介(Spring Boot + Mybatis + Druid数据源【官方start】)
- ubuntu16.04安装jdk、Android Studio、Android Sdk
- Jetty下载安装+MAC