hibernate的多表查询

一.数据库中多表之间的关系

1.多对多

使用中间表。

中间表只有俩个外键,引用俩个多对多表的外键。

不能有其他字段信息,至于中间表,应该用联合主键。

细节:任何一个多方的表和中间表去比较,都是一(中间表)对多(多表)的关系。

2.一对一(多对一或者一对多)

(1)第一种(一对多)

建立外键的方式。

使用外键约束,非空约束,唯一约束。

它是把外键字段加了非空约束和唯一约束,从而实现了一对一。

(2)第二种(多对一)

使用主键的方式。

让其中一张表即使主键,而是外键。

(3)如何确立俩表之间的关系

找外键。(主表和从表的区分)

二.多表映射配置的步骤

1.确定俩表之间的关系。

2.在数据库中实现俩张表的关系建立。

3.在实体类中描述俩个实体类之间的关系。

4.在映射配置文件中建立俩个实体和俩张表之间的关系。

三.实体类中的细节

1.说明

(1)细节一:hashSet

给从表创建集合属性时,使用hashSet集合。设置长度为0.

作用一:防止空指针异常。new hashSet集合。

作用二:防止消耗内存。设置长度为0.

(2)细节二:toString

实体类的toString方法不要加载主表属性或者从表集合属性。

2.范例

图片

四.保存操作

1.一对多的配置文件

(1)主表

图片

(2)从表

图片

2.实体类

(1)主表

图片

(2)从表

图片

3.测试类

(1)初级【不推荐】

图片

(2)中级【设置双向关系的管理inverse的演示】

图片

图片

(3)高级【级联操作,推荐】

图片

图片

五.级联修改

图片

六.删除操作

1.说明

级联操作:删除操作

 删除从表:单表操作

 删除主表:

      第一种情况:有从表引用

          hibernate会设置主表和从表的外键引用为null,然后删除主表的数据。

          特殊情况:

              如果外键字段有非空约束,则hibernate不能更新外键字段为null,则会发生报错。【可以设置级联删除cascade="delete"】

          解决方案:

              手动删除从表的数据或者设置手动设置外键字段,再删除主表。

      第二种情况:没有从表引用。

          单表操作,直接删除。

2.注意事项

级联删除要慎用。

3.范例

图片

图片

七.源码

day03.rar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值