一、表之间的关系分析
1、一对多关系
一个公司对应多个员工,而一个员工只能对应一个公司,这种关系就是一对多关系
一对多建表原则:
多的一方创建外键
2、多对多关系
一个学生可以选修多门课程,一门课程可以被多个学生选,这样的关系就是多对多关系
多对多建表原则:
3、一对一关系
一个公司只能有一个注册地址,一个注册地址只能被一个公司注册,这叫一对一关系
实际上存在一对一关系的情况都可以将表直接合并
二、一对多关系配置
1、建客户表cst_customer和联系人表lkm_linkman
2、建立实体类
一个客户对应多个联系人
>>客户类
>>联系人类
3、建立实体类映射文件
>>Customer.hbm.xml
>>Linkman.hbm.xml
4、配置核心映射文件
5、测试
三、一对多关系操作
1、级联保存
@Test
public void test1(){
Session session = HibernateUtil.openSession();
Transaction transaction = session.beginTransaction();
Customer customer1 = new Customer();
customer1.setCust_name("zhangsan");
Customer customer2 = new Customer();
customer2.setCust_name("lisi");
Linkman linkman1 = new Linkman();
linkman1.setLkm_name("zhangsan_lkm1");
Linkman linkman2 = new Linkman();
linkman2.setLkm_name("zhangsan_lkm2");
Linkman linkman3 = new Linkman();
linkman3.setLkm_name("lisi_lkm");
linkman1.setCustomer(customer1);
linkman2.setCustomer(customer1);
linkman3.setCustomer(customer2);
customer1.getLinkmans().add(linkman1);
customer1.getLinkmans().add(linkman2);
customer2.getLinkmans().add(linkman3);
// 只需要提交一个对象即可
session.save(linkman1);
/* session.save(linkman2);
session.save(linkman3);
session.save(customer1);
session.save(customer2);*/
transaction.commit();
}
2、级联删除
级联删除:删除一边的时候,同时将另一方的数据也一并删除。
删除客户级联删除联系人
3、区分cascade和inverse