继承这个词多半用在OOP编程里,比如类的继承,但是在Hibernate里表也有继承关系,这也难怪,因为Hibernate的目的就是要把数据库对象化。
先来看一个简单的例子,一个人员表Person,这张表里主要纪录一些公司人员的基本信息;还有一张用户表User,这张表纪录的是公司里的人员登陆公司网站的用户名信息表;很显然用户来源于人员,一个人员可以有多个用户,而一个用户只对应一个人员,这样User这张表就可以继承Person这张表了,因为它完全符合继承关系的条件,即User是在Person的基础上扩展而来的。
下面我们看看上例Hibernate里的HBM XML文件和POJO类是怎么写的,先看HBM XML文件的写法:
<class name="org.user.dao.hibernate.Person" table="person">
<id name="id" column="id"><generator class="increment" /></id>
<property name="firstName" column="firstname" length="30"/>
<property name="lastName" column="lastname" length="30"/>
<joined-subclass name="org.user.dao.hibernate.User" table="user">
<key column="person_id"/>
<property name="id" column="id"/>
<property name="userName" column="user_name"/>
</joined-subclass>
</class>
这个XML文件体现了Person和User的继承关系,如果你还是不太清楚地话,看下面的POJO类,那可是百分之百的继承关系了:
package org.user.dao.hibernate;
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 6254796603241870646L;
private long id;
private String firstName;
private String lastName;
public Person() {
}
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return this.lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
User类的写法:
package org.user.dao.hibernate;
public class User extends Person {
private static final long serialVersionUID = 2848034506633654174L;
private String userName;
public User() {
}
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
至此Hibernate里数据库表的继承关系就完全展示出来了。Hibernate里使用映射文件(HBM XML文件)和POJO类来完全封装数据库,使数据库完全对象化,而我们在写程序操作数据库时也完全像操作一个对象一样,这样数据库表的继承关系也表现的非常自然了。
分享到:
相关推荐
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...
对于hibernate的9中对应关系的代码详解和继承关系数据库表结构设计
在一些项目中,会采用集成的关系来定义数据库实体类,比如:人(Person)与学生(Student),学生来源与人,所以人的基本属性学生也拥有;但学生有的一些属性,人就不具有。人与学生之间很显然就拥有了继承关系 ------...
方便你使用的abstract类,继承起来非常方便
这种映射方式只需为继承关系树的Employee根类创建一张表EMPLOYEES。如图14-4所示,在EMPLOYEES表中不仅提供和Employee类的属性对应...图14-5显示了持久化类、映射文件和数据库表之间的对应关系。图14-5持久化类、映射文
03 03Hibernate_Component : 实体细粒度的划分,数据库中的一张表在程序中划分为几个部分的实体,配置文件和增、删、改、查的使用。 04 04Hibernate_Composite : 复合主键的使用,在开发中很少用到,一般良好的设计...
5. 对象/关系数据库映射基础(Basic O/R Mapping) 5.1. 映射定义(Mapping declaration) 5.1.1. Doctype 5.1.2. hibernate-mapping 5.1.3. class 5.1.4. id 5.1.5. composite-id 5.1.6. 鉴别器...
2.2.4. 映射继承关系 2.2.4.1. 每个类一张表 2.2.4.2. 每个类层次结构一张表 2.2.4.3. 连接的子类 2.2.4.4. 从父类继承的属性 2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一...
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...
* ,增改支持对象化操作:增删改是数据库操作的最基本单元,不用重复写这些增删改的代码,并且添加和更新支持类似于hibernate中的对象化操作. * 3.查询方式灵活:支持android框架提供的方式,也支持原生sql方式. * 4....
符合Java习惯的关系数据库持久化 前言 1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. ...
2.2.4. 映射继承关系 2.2.4.1. 每个类一张表 2.2.4.2. 每个类层次结构一张表 2.2.4.3. 连接的子类 2.2.4.4. 从父类继承的属性 2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-...
5. 对象/关系数据库映射基础(Basic O/R Mapping) 5.1. 映射定义(Mapping declaration) 5.1.1. Doctype 5.1.1.1. EntityResolver 5.1.2. hibernate-mapping 5.1.3. class 5.1.4. id 5.1.4.1. Generator 5.1.4.2. 高...
1.1.1 关系数据库 1.1.2 理解SQL 1.1.3 在Java中使用SQL 1.1.4 面向对象应用程序中的持久化 1.2 范式不匹配 1.2.1 粒度问题 1.2.2 子类型问题 1.2.3 同一性问题 1.2.4 与关联相关...
在这种映射方式下,继承关系树的每个类以及接口都对应一个...图14-6继承关系树的每个类对应一个表图14-7持久化类、映射文件和数据库表之间的对应关系14.3.1创建映射文件从Company类到Employee类是多态关联,由于关系数
N关系时保存技巧、Hibernate缓存机制、Hibernate批量处理数据、Hibernate三种继承映射策略、hibernate映射体系、Hibernate主键生成策略、持久层DAO设计建议、基于xml文件的bean、使用HibernateAPI在Spring中、事务...
12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 12.1.2 操纵持久化对象 12.2 继承关系树的根类对应一个表 12.2.1 创建映射文件 12.2.2 操纵持久化对象 12.3 继承关系树的每个类对应一个...
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...
Hibernate的继承关系 21 每棵继承树映射成一张表(hibernate_extends_1) 22 每个子类映射成一张表(hibernate_extends_2) 24 每个具体类映射成一张表(hibernate_extends_3) 25 组件component映射(hibernate_...