Hibernate(3)

hibernate第三天

多表关系在hibernate中的表达

多表关系:
多对一|一对多
多对多
一对一(不存在)

举例:
多对一:商品和分类
一对多:客户和订单

一对多|多对一

一对多|多对一的关系表达:

1.表中的表达
在这里插入图片描述2.实体中的表达
在这里插入图片描述

3.orm元数据中的表达
一对多的一方:

	<!-- 集合,将一对多关系在配置文件中体现出来  -->
	<!-- 
		name属性:集合属性名
		key属性:外键列名
		one-to-many:一对多关系  class与谁的关系   配该类完整包名
		 -->
	<set name="linkMens">
		<key column="lkm_cust_id"></key>
		<one-to-many class="LinkMan"/>
	</set>

多对一的一方

	<!-- 多对一 -->
	<!-- 
		name属性:集合属性名
		key属性:外键列名
		many-to-one:多对一关系  class与谁的关系   配该类完整包名
	-->
	<many-to-one name="customer" column="lkm_cust_id" class="Customer"></many-to-one>

操作

级联操作:

	<!-- 
		级联操作:cascade
			save-update:级联保存更新
			delete:级联删除
			all:save-update+delete
		级联操作: 简化操作,目的:少写两行代码
	 -->

结论:简化操作,一定要用的话,建议使用save-update,不建议使用delete

关系维护
在保存时,两方都会维护外键关系,外键关系维护了两次,冗余了,多余的维护关系语句,显然是客户这一端在维护关系

	 <!--
	 	  inverse属性:配置关系是否维护 
	 	  true:不维护关系
	 	  false(默认值):维护关系
	 -->

结论:性能优化,提高关系维护的性能
维护关系的原则
原则:总有一方必须维护关系,多的一方是不能放弃维护关系的
注意:1.如果一的一方不维护关系,那么维护关系的代码可以省略
2.删除的时候,a.解除关系(维护关系) b.级联删除(级联操作)

多对多
1.表中表达
在这里插入图片描述2.实体中的表达

在这里插入图片描述
3.orm元数据中的表达

	<!-- 多对多关系表达  -->
	<!-- 
		name:集合属性
		table:配置中间表名
		key
			|-column:外键,别人引用"我"的外键列名
		many-to-many:
			class:我与哪个类是多对多关系
			column:我引用别人的外键列名	
	-->

操作:
结论:在开发中,如果遇到多对多关系,一定要先选择一方放弃维护关系(一般选择谁来放弃的时候要看业务方向,例如:录入员工时,需要为员工指定所属角色,那么业务方向就是由员工维护角色,角色不需要维护与员工的关系,角色放弃维护)

练习:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值