夜光带你走进Hibernate(八)

版权声明:Genius https://blog.csdn.net/weixin_41987706/article/details/89305757

夜光序言:

 

我的心不是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提供的面向对象的查询方式

 

猜你喜欢

转载自blog.csdn.net/weixin_41987706/article/details/89305757