Hibernate框架(三)一对多|多对一 多对多

本篇介绍一下Hibernate的一对多|多对一、多对多等关系的操作。如果对于Hibernate的基本配置还不熟悉请移步到

Hibernate的基本配置

Hibernate的实体规则和对象状态

一.一对多|多对一关系

    1.关系表达

        1.1 表中的表达

            

       1.2 实体中表达

            

        1.3 ORM元数据的表达   

<!-- 集合,一对多关系,在配置文件中配置 -->
		<!-- 
			name属性:集合属性名
			column属性: 外键列名 与多对一的外键名字一致
			class属性: 与我关联的对象完整类名
		 -->
	<set name="linkMens">
	    <key column="lkm_cust_id"></key>
	    <one-to-many class="LinkMan"/>
	</set>
<!--多对一关系,在配置文件中配置 -->
		<!-- 
			name属性:引用属性名
			column属性: 外键列名 与一对多的外键名字一致
			class属性: 与我关联的对象完整类名
		 -->
		 <many-to-one name="customer" column="lkm_cust_id" class="Customer"></many-to-one>
      2.代码演示  
Customer c = new Customer();
		c.setCust_name("天元陆兵");
		
		LinkMan lm1 = new LinkMan();
		lm1.setLkm_name("张三");
		
		LinkMan lm2 = new LinkMan();
		lm2.setLkm_name("李四");
		
		//表达一对多,客户下有多个联系人
		c.getLinkMens().add(lm1);
		c.getLinkMens().add(lm2);
		
		//表达多对一,联系人属于哪个客户
		lm1.setCustomer(c);
		lm2.setCustomer(c);
		
		
		session.save(c);
		session.save(lm1);
		session.save(lm2);

    3.代码演示(进阶)

        3.1 级联操作 ------简化操作(如果使用建议用 save-update)


        3.2 关系维护        如果存在关系维护,操作删除时直接会设置为null。


        默认情况下,双方都在维护关系,这样势必造成冗余。如果一的一方也在维护关系,这是也可以在程序中将多的一方关系维护语句屏蔽掉。但是如果一的一方一旦放弃关系维护,就不能将多的一方的关系维护也屏蔽了。

//3操作
		//1> 获得要操作的客户对象
		Customer c = session.get(Customer.class,1l);
		//2> 创建联系人
		LinkMan lm1 = new LinkMan();
		lm1.setLkm_name("赵六");
		//3> 将联系人添加到客户,将客户设置到联系人中
		c.getLinkMens().add(lm1);
		//lm1.setCustomer(c);//客户在维护关系时,屏蔽这一句也是可以的,如果客户不再维护关系,就要放开这句。
		//4> 执行保存
		session.save(lm1);

二.多对多

 1.关系表达

    1.1 表中的表达


        1.2 对象中表达


    1.3 orm元数据


    2.代码演示

        2.1 操作关联属性


    3 .进阶

       3.1 inverse属性


       3.2 cascade属性


            

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值