继承实现方式分为三种:subclass; joined-subclass;union-subclass

a.类中体现

 

b.库中体现分为三种:

b.1:一种方式:人和学生公用一张表,添加一个辨别字段,学生数据特有的字段不能设置非空约束,因为人对象是没有这个数据的

b.2第二种方式:共有数据放一张表中,特有的数据放另外一张表中;外键关联:外键做主键;

b.3第三种方式:每个对象有各自表存放各自的数据;

c.不同方式的配置也不同:

c.1一种方式只有一个表的情况:只需要配置人对象映射配置:

不同对象插入设置了一个默认辨别值,

c.2第二方式的配置:子类对应的表进行主键关联;

c.3第三种方式配置:注意的是主键的生成策略,两个表的主键是连续的

d.测试

d.1一种方式进行

保存:执行两条插入语句,并且为辨别列自动设对应的值,对于school特有的值,person所对应那列值为null;

查询:

查询子类和父类都只从一张表中,一条查询语句,以type来判断类型;

缺点:需要添加辨别列

子类特有列不能加非空约束

如果继承新加的列比较多,那么父类的数据冗余很多null值;

d.2,对应第二方式:

保存:

特别之处是保存子类型时,会执行两条插入语句,因为数据是存放在两个表中;

查询:

采用多态查询父类时,采用左外连接的方式联合查询;

查询子类时,采用内连接联合查询;

缺点:保存和查询比第一种方式差

优点:不需要辨别列

特有数据列可设置为非空

没有冗余字段;

d.3第三种方式:

保存:执行两条插入语句;

获取:获取子类直接获取;

获取父类:利用子查询先查询person和student采用union组合起来再得到整个父类;需要查询两个表;因为子表父表数据都属于父类;

缺点:存在冗余的字段;

更新:

更新父类的效率较低:因为要更新父表和子表的数据;

hibernate对象关系实现(四)继承实现的更多相关文章

  1. hibernate对象关系实现(一)一对多

    hibernate是对jdk一个封装工具,实现对象和数据库之间数据映射.使用时涉及到四个问题:a.对象之间的关系在类中的体现:b,对象关系对应的数据库中表之间体现:c.实现a,b在hibernate的 ...

  2. Hibernate 对象关系映射文件

    简介: POJO 类和关系型数据库之间的映射可以用一个 XML 文档来定义 通过 POJO 类的数据库映射文件,Hibernate 可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据 ...

  3. hibernate对象关系实现(三)多对多实现

    单向n-n:(catogory-item)一个类别对应多个条目,一个条目对应多个类别 a.以类别类中有条目的集合的引用为例: b.数据库中的体现:建立一个新表,以类别和条目的主键关联的外键做新表的联合 ...

  4. hibernate对象关系实现(二)一对一

    双向一对一以部门和经理为例: a.部门和经理类中各自由对方的引用:(省略了get/set方法) b.数据库两种方式实现:一种(b.1)是外键映射,并将外键添加唯一约束(至于哪个对象的主键做外键,可随意 ...

  5. hibernate对象关系映射( 一对一,一对多,多对一,多对多的单向,双向映射 ——)

    对象之间的关系: 关系映射之间的关系只的是对象之间的关系,并不指数据库表的关系(外键关系)这儿解决的问题是当对象之间的关系之一时,数据库表该如何映射,编程上如何对待. 一对一(主键关联,和单向的外键关 ...

  6. hibernate对象关系映射的配置

    一对一主键关联单双向 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-m ...

  7. Hibernate -- 对象关系映射基础

  8. hibernate(四)__由表逆向创建Domain对象和对象关系映射文件

    之前我们是手写Domain对象和对象关系映射文件->然后生成数据库中的Table. 现在我们反过来先在数据库中建好Table->然后用工具生成Domain对象和对象关系映射文件. 步骤: ...

  9. Hibernate基础学习(四)—对象-关系映射(上)

    一.映射对象标识符      Java语言按内存地址来识别或区分同一个类的不同对象,而关系数据库按主键值来识别或区分同一个表的不同记录.Hibernate使用对象标识符(OID)来建立内存中的对象和数 ...

随机推荐

  1. 【Pro ASP.NET MVC 3 Framework】.学习笔记.11.ASP.NET MVC3的细节:概览MVC项目

    书Adam The Definitive Guide to HTML5 Adam Applied ASP.NET 4 in Context and Pro ASP.NET 4 到此为止,我们已经学了为 ...

  2. Docker第三方项目小结

    软件项目的成功常常根据其催生的生态系统来衡量.围绕或基于核心技术构建的项目增添了功能和易用性,它们常常日臻完善.Docker就是一个典例,有众多第三方项目扩展.补充或改进Docker. •Docker ...

  3. HDU 1520:Anniversary party(树形DP)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=1520 Anniversary party Problem Description   There i ...

  4. POJ 1260:Pearls(DP)

    http://poj.org/problem?id=1260 Pearls Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8 ...

  5. python: 字符串按空格分成列表split与加密密码maketrans

    #字符串按空格分成列表split() print("fu li mei".split()) #split按空格分成列表 print("1+a+2+b".spli ...

  6. HDU 4715:Difference Between Primes

    Difference Between Primes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  7. 关于easyui的窗口和tab页面不执行js说明

    一直以来群里里面很多人反应,在用tab加载界面的时候,界面里面的js不会执行.今天GodSon在此说明一下原因. 不管是window,dailog还是tab其实质最终都是继承了panel.panel有 ...

  8. TSP问题

    之前写过一道类似的题目,Uva 1347. http://www.cnblogs.com/TreeDream/p/5981535.html 这个题目和TSP问题已经很接近了,只是描述的奇奇怪怪的,从最 ...

  9. selenium实例

    代码: # -*- coding:utf- -*- from selenium import webdriver driver = webdriver.PhantomJS() driver.get(' ...

  10. CAShapeLayer

    之前讲过CALayer动画相关知识,再来看看更加复杂的CAShapeLayer相关的动画知识. 普通CALayer在被初始化时是需要给一个frame值的,这个frame值一般都与给定view的boun ...