试题详情
- 简答题关系数据库的表之间不存在继承关系,为了将面向对象中的继承关系映射关系数据库中,可以使用以下三种继承映射策略:每个继承层次一张表;每个具体类一张表;每个类一张表。试请分析三种策略在实际应用中各自的优缺点?
- 方式一:整个的继承体系就用一张表
优缺点:首先表中引入的区分子类的字段,也就是包括了描述其他字段的字段。其次,如果某个子类的某个属性不能为空,那么在数据库一级不能设置该字段not null(非空),维护起来方便,只需要修改一个表,灵活性差,表中冗余字段会随着子类的增多而越来越多,在任何情况下,都只需处理一个表,对于单个对象的持久话操作只需要处理一个表。
方式二:每个子类一张表,存放子类所特有的属性
优缺点:这种设计方式完全符合关系模型的设计原则,且不存在冗余,维护起来比较方便,对每个类的修改只需要修改其所对应的表,灵活性很好,完全是参照对象继承的方式进行配置,对于父类的查询需要使用左外链接,对于子类查询需要使用内链接,对于子类的持久话至少要处理两个表。
方式三:每个具体类一张表(union-subclass),保存是子类完整信息
优缺点:这种设计方式符合关系模型的设计原则,但有表中存在重复字段的问题。如果需要对基类进行修改,则需要对基类以及该类的子类所对应的所有表都进行修改,映射的灵活性很大,子类可以包括基类属性在内的每一个属性进行单独配置,对于子类的查询只需要访问单独的表,对父类查询怎需要检索所有的表,对于单个对象持久话操作只需要处理一个表。 关注下方微信公众号,在线模考后查看
热门试题
- Hibernate采用xml文件来配置对
- 下面哪个选项不属于MVC三个核心模块()
- 什么是ORM?它主要解决什么问题?
- 以下哪个技术不是Ajax技术体系的组成部
- 如何理解Session Factory与
- 当用户在struts.xml文件中需要包
- 关于spring说法错误的()
- HQL不支持聚合函数有()
- 如果你已知某个实例的持久化标识,你可以使
- Transaction接口主要是用于管理
- 下面关于Hibernate的映射文件说法
- 关于AOP错误的()
- ORM是()
- Spring核心是什么?
- 在Struts2框架的配置文件中,以下属
- Action元素指定的每个()子元素定义
- 如果需要在页面中输出某变量的值,则在St
- struts2中的ActionServl
- 下面信息不在Struts配置文件中配置的
- 在Action类中定义的属性使用修饰符(