夜光带你走进Hibernate(八)

探讨了ORM中复杂继承的三种映射方式,包括单表、三表和每子类一表策略的特点及适用场景,并解析了Hibernate的级联操作如save-update和delete的应用。

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

夜光序言:

 

我的心不是24小时营业的餐厅 没有随时的欢迎光临

 

正文:

复杂继承映射

方式1:整个继承结构一张表

特点:

所有的子类都写到一个映射文件中

用一张表存储所有的子类信息

<subclass name="Cat" discriminator-value="cat_">

<property name="catching"></property>

</subclass>

 

总结:

生成的表,不符合数据库设计原则

因为所有子类都用一张表存储,存在很大的冗余字段

 

 

方式2:三张表

特点:

完全按照面向对象设计表结构

<joined-subclass name="Cat" table="t_cat">

<key column="id"></key>

<property name="catching"></property>

</joined-subclass>

 

 

总结:

设计的表,是符合数据库设计原则(三大范式)

但是,表结构、关系变得负责,影响数据访问效率

 

 

方式3:每个子类用一张表

特点:

一个映射文件

有多少个子类对应多少个表,父类不对应表

<!-- 夜光:注意:使用union-subclass要求主键不能自增长 -->

<!-- 子类:猫 -->

<union-subclass name="Cat" table="t_cat">

 <property name="catching"></property>

</union-subclass>

 

夜光总结:
推荐使用
注意:主键不能为自增长,这一点很重要~~

 

 

3. cascade 级联操作

cascade   表示级联操作,在一对多、多对一、一对一种都可以设置

save-update   级联保存或更新

delete        级联删除

 

save-update,delete   级联保存、更新、删除

all                同上

 

none           不级联(默认值)

 

 

未完成:

hibernate查询:

二级缓存/连接池支持

Hibernate对session管理(案例)

 

4. hibernate查询

Hibernate提供的查询:

1)主键查询

get/load

2) 对象导航方式

3) HQL查询

Hibernate提供的面向对象的查询方式

 

本文原文地址:https://blog.youkuaiyun.com/weixin_41987706/article/details/89305757

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值