hiberbate学习之一对多

  • 一对多的配置

1.画图理解

hiberbate学习之一对多_第1张图片

2.执行步骤(客户和联系人)

(1)创建实体类

(2)在实体类中体现他们一对多关系

package com.sq.entity;

import java.util.HashSet;
import java.util.Set;

/**
 *@author sq
 *
 */
public class Customer {
	
	private String c_id;
	private String c_name;
	private Integer age;
	//表示一个客户有多个联系人
	private Set linkedMans = new HashSet();
	
	
	public Set getLinkedMans() {
		return linkedMans;
	}
	public void setLinkedMans(Set linkedMans) {
		this.linkedMans = linkedMans;
	}
	public String getC_id() {
		return c_id;
	}
	public void setC_id(String c_id) {
		this.c_id = c_id;
	}
	public String getC_name() {
		return c_name;
	}
	public void setC_name(String c_name) {
		this.c_name = c_name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Costomer [c_id=" + c_id + ", c_name=" + c_name + ", age=" + age
				+ "]";
	}
}

package com.sq.entity;
/**
 *@author sq
 *
 */
public class LinkedMan {
	
	private String l_id;
	private String l_name;
	private Integer l_age;
	//表示一个lianxiren只有一个客户
	private Customer customer;
	
	
	
	public Customer getCustomer() {
		return customer;
	}
	public void setCustomer(Customer customer) {
		this.customer = customer;
	}
	public String getL_id() {
		return l_id;
	}
	public void setL_id(String l_id) {
		this.l_id = l_id;
	}
	public String getL_name() {
		return l_name;
	}
	public void setL_name(String l_name) {
		this.l_name = l_name;
	}
	public Integer getL_age() {
		return l_age;
	}
	public void setL_age(Integer l_age) {
		this.l_age = l_age;
	}
	@Override
	public String toString() {
		return "LinkedMan [l_id=" + l_id + ", l_name=" + l_name + ", l_age="
				+ l_age + "]";
	}
}


(3)配置映射文件

(4)在映射文件中体现一对多关系



	

	
		
			
		
		
		
		
		
	



	
		
			
		
		
		
		
		
			
			
			
			
		
	


  • 一对多级联更新
在客户中set联系人集合,只需要保存客户,会同时保存联系人信息
		cascade="save-update">
			
			
			
			
		

  • 一对多级联删除
删除客户时,会同时删除联系人信息
		
			
			
			
			
		
注意:hibernate机制实现表与表之间关系默认是双向维护的,在修改外键时会发送两次sql语句,因为两个配置文件都有外键,因此需要使用inverse属性,默认false,启用维护,修改为true,即不对另一方维护,可以提高数据更新效率

你可能感兴趣的:(hibernate,一对多,级联关系,机制,hibernate)