【Hibernate集锦】---继承映射之单表继承

本文介绍了Java中的继承概念以及在实际场景中的应用,重点讲解了Hibernate中的单表继承,包括单表继承的定义、如何实现及其实例演示。通过一个教师和学生的例子展示了如何将公共信息抽象成基类,子类共享同一张表,使用type字段作为鉴别字段区分不同类别的记录。同时,文章探讨了单表继承的优缺点,如效率高、维护简便,但存在冗余字段和灵活性差的问题。
摘要由CSDN通过智能技术生成


什么是继承?


   【Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属

性和行为,并能扩展新的能力。】百度百科上是这样定义的。在实践过程中应用继承,我们大脑中首先会闪现出这样

几个词:即抽象、提取、封装、拓展。连词造句概括出什么是继承?继承就是把公共部分提出出来封装到一个单独的

类中作为父类进行维护,然后其他继承这个父类的子类就可以直接享有父类中所有的“财产”并可以填充自己的特有

成分。俗话说:实践出真知,结合一个真实场景来应用一下。


   就拿教师和学生来讲,都会有一份自己的档案记录。简单提取几个信息,教师都有编号、姓名、性别、年龄、职

级等等,学生有学号、姓名、性别、年龄、宿舍号等等。。此时维护教师和学生的信息,我们就可以将这些公共信息

提取出来单独维护。抽象出一张基类:用户,让教师类和学生类来分别继承这个基类。见下面UML图:




什么是单表继承?


单表继承,即整个继承体系都用一张表。也就是说子类所使用的表与父类相同,共享一张表。如下表t_user表:


   或许你已经注意到上表中多了一个字段:type。因为类继承树是对应多个类的。要把多个类的信息在一张表中进

行维护,必须有种机制来区分哪些记录是属于哪个类的,type即鉴别字段,用它的值来进行区分。这里type=T表示为

教师类,type=S表示为学生类。但是type字段不存在对应的映射类属性,它需要在配置文件中进行单独配置。在数据

存储的时候hibernate会自动存储,在加载的时候会根据鉴别值取得相关的对象。这里在后面源码中会进行介绍。


下面来看一下在程序中的实现。构建基类user类:

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值