多对多1

本文详细解析了数据库中如何处理多对多关系,通过创建桥接表将复杂关系简化为一对多,介绍了Hibernate框架下关联关系的具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 数据库的多对多
    1.1 数据库中不能直接映射多对多
    处理:创建一个桥接表(中间表),将一个多对多关系转换成两个一对多

    注1:数据库多表联接查询
    永远就是二个表的联接查询

     查询一本书为例
     sesssion.get(Book.class,5)->
     select * from t_hibernate_book where book_id = ?(5)
     resultSet->5	a	10
     Book b = Class.forName("com.zking.five.entity.Book").newInstance();
     b.setBookId(5);
     b.setBookName(a);
     b.setPrice(10);
     
     hibernate处理关联关系
     1、通过set找到桥接表(table属性),
     2、找到当前实体类对应表的主键在桥接表中的外键(key标签中的column属性)
     3、查出关联表(t_hibernate_category)的主键(category_id)
     select cid from t_hibernate_book_category where bid = ?(5)
     resultSet->关注最后一列
     8	5		4
     9	5		5
     10	5		2
     list<String>4/5/2
     4、查出来的外键关联了一个实体类(class=com.zking.five.entity.Category),它可以
     找到这个类的映射文件(class标签的name=com.zking.five.entity.Category;),从而
     找到了对应的实体类对应的表的主键id标签中的column字段-》category_id
     select * from t_hibernate_category where category_id in (4,5,2);
     2	神话
     4	a0
     5	a1
     Category c = Class.forName("com.zking.five.entity.Category").newInstance();
     原理参照EntityBaseDao->List<c> categories
     5、b.setCategories(categories);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值