hibernate_day03一对多表操作

一、表之间的关系分析

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值