表与表之间关系回顾(重点)
1 一对多 (1)分类和商品关系,一个分类里面有多个商品,一个商品只能属于一个分类
(2)客户和联系人是一对多关系 - 客户:与公司有业务往来,百度、新浪、360 - 联系人:公司里面的员工,百度里面有很多员工,联系员工 ** 公司和公司员工的关系
- 客户是一,联系人是多 - 一个客户里面有多个联系人,一个联系人只能属于一个客户
(3)一对多建表:通过外键建立关系
2 多对多 (1)订单和商品关系,一个订单里面有多个商品,一个商品属于多个订单
(2)用户和角色多对多关系 - 用户: 小王、小马、小宋 - 角色:总经理、秘书、司机、保安 ** 比如小王 可以 是总经理,可以是司机 ** 比如小宋 可以是司机,可以是秘书,可以保安 ** 比如小马 可以是 秘书,可以是总经理
(3)多对多建表:创建第三张表维护关系
3 一对一 (1)在中国,一个男人只能有一个妻子,一个女人只能有一个丈夫 |
Hibernate的一对多操作(重点)
一对多映射配置(重点)
以客户和联系人为例:客户是一,联系人是多
第一步 创建两个实体类,客户和联系人
第二步 让两个实体类之间互相表示 (1)在客户实体类里面表示多个联系人 - 一个客户里面有多个联系人
(2)在联系人实体类里面表示所属客户 - 一个联系人只能属于一个客户
第三步 配置映射关系 (1)一般一个实体类对应一个映射文件 (2)把映射最基本配置完成
(3)在映射文件中,配置一对多关系 - 在客户映射文件中,表示所有联系人
- 在联系人映射文件中,表示所属客户
第四步 创建核心配置文件,把映射文件引入到核心配置文件中
测试:
|
一对多级联操作
级联操作 1 级联保存 (1)添加一个客户,为这个客户添加多个联系人
2 级联删除 (1)删除某一个客户,这个客户里面的所有的联系人也删除 |
一对多级联保存
1 添加客户,为这个客户添加一个联系人 (1)复杂写法: //演示一对多级联保存 @Test public void testAddDemo1() { SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { //得到sessionFactory sessionFactory = HibernateUtils.getSessionFactory(); //得到session |