Hibernate三种继承映射方式的比较

本文探讨了关系模型设计的不同策略,包括每个具体类一张表、每个分层结构一张表及每个子类一张表的方法,并分析了各自的优缺点,如可维护性、灵活性和查询性能等。

比较方面 

每个具体类一张表 

每个分层结构一张表 

 每个子类一张表

 建立关系模型原则

 每个具体类对应一张表,有多少具体类就需要建立多少个独立的表

 描述一个继承关系只用一张表,也就是说子类所使用的表与父类相同

 每个子类使用一张表,但这些子类所对应的表都关联到基类所对应的表中

 关系模型的优缺点

这种设计方式符合关系模型的设计原则,但有表中存在重复字段的问题 

 缺点有二:首先表中引入的区分子类的字段,也就是包括了描述其他字段的字段。其次,如果某个子类的某个属性不能为空,那么在数据库一级不能设置该字段not null(非空)

 这种设计方式完全符合关系模型的设计原则,且不存在冗余

 可维护性

如果需要对基类进行修改,则需要对基类以及该类的子类所对应的所有表都进行修改 

 维护起来方便,只需要修改一个表

 维护起来比较方便,对每个类的修改只需要修改其所对应的表

 灵活性

 映射的灵活性很大,子类可以包括基类属性在内的每一个属性进行单独配置

 灵活性差,表中冗余字段会随着子类的增多而越来越多

 灵活性很好,完全是参照对象继承的方式进行配置

 查询性能

 对于子类的查询只需要访问单独的表,对父类查询怎需要检索所有的表

 在任何情况下,都只需处理一个表

 对于父类的查询需要使用左外链接,对于子类查询需要使用内链接

 维护性能

 对于单个对象持久话操作只需要处理一个表

对于单个对象的持久话操作只需要处理一个表 

 对于子类的持久话至少要处理两个表

 

 

 

 

 

以上三种映射代码,在本blog的经验技巧之Hibernate中均有详细表述,请批评指正

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值