映射多对一关联关系(many-to-one)

在many端的.hbm.xml文件中配置

<!--
        	 映射多对一的关联关系.使用many-to-one来映射多对一的关联关系
        	name:one端的属性名
        	class:one端属性对应类名
        	column:one端在many端对应数据表中外键的名字
         -->
        <many-to-one name="customer" class="Customer" column="CUSTOMER_ID"></many-to-one>

各种方法:

1.save方法:

public void testMany21Save() {
		
		Customer customer = new Customer();
		customer.setCustomerName("AA");
		
		Order order1 = new Order();
		order1.setOrderName("ORDER_1");
		
		Order order2 = new Order();
		order2.setOrderName("ORDER_2");
		
		//设定关联关系
		order1.setCustomer(customer);
		order2.setCustomer(customer);
		
		//执行SAVE操作:先插入Customer,再插入Order。3条INSERT语句
		//先插入one端(Customer),再插入many端(Order),只有INSERT语句
		//先插入Order,再插入Customer,三条INSERT,两条UPDATE
		//推荐先插入one端
		session.save(customer);
		session.save(order1);
		session.save(order2);
		
	}

2.get方法

@Test
	public void testMany21Get() {
		
		//1.若查询many端的一个对象,则只查询many端的对象,而没有查询对应one端对象
		Order order = (Order) session.get(Order.class, 1);
		System.out.println(order.getOrderName());
		
		//2.在需要使用关联对象时,才发送对应SQL语句
		Customer customer = order.getCustomer();
		System.out.println(customer.getCustomerName());
		
		//3.在查询Customer对象时(由many端导航到one端时),若session关闭,会发生懒加载异常
		//4.获取Order对象时,默认情况下,其关联的Customer对象是代理对象
	}

3.delete方法:在不设定级联关系情况下,且one端和many端存在引用情况下,不能直接删除这一端对象

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值