`
Ryan200909
  • 浏览: 9330 次
社区版块
存档分类
最新评论

Hibernate中数据库表的继承关系

阅读更多

继承这个词多半用在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文件体现了PersonUser的继承关系,如果你还是不太清楚地话,看下面的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类来完全封装数据库,使数据库完全对象化,而我们在写程序操作数据库时也完全像操作一个对象一样,这样数据库表的继承关系也表现的非常自然了。

分享到:
评论

相关推荐

    (2)Hibernate3.2 中的类继承关系

    这种策略可以避免单表继承中的空字段问题,但可能会导致更多的JOIN操作,影响性能。 3. Concrete Table Inheritance(具体类继承): 每个类(包括基类和子类)都有自己的数据库表。每个表只包含该类特有的属性,...

    hibernate映射继承关系(每个类都对应一张表)

    Hibernate,作为Java中广泛使用的对象关系映射(ORM)框架,提供了多种方式来处理继承关系的映射,其中一种就是"每个类都对应一张表"的策略。本文将深入探讨这种映射方式,以及如何在Hibernate中实现它。 首先,...

    用Hibernate映射继承关系

    本主题聚焦于“用Hibernate映射继承关系”,我们将深入探讨Hibernate如何处理对象的继承层次结构,并将其映射到数据库中的表。 Hibernate支持多种继承策略,包括单一表继承(Single Table Inheritance)、联合表...

    HIBERNATE - 符合Java习惯的关系数据库持久化

    通过将Java对象模型映射到关系型数据库表上,Hibernate为数据持久化提供了强大的支持,同时保持了代码的简洁性和可维护性。 #### 二、权限与配置 在部署Hibernate之前,必须确保具备适当的权限,并进行正确的配置...

    hibernate和数据库的各种包

    1. **对象关系映射(ORM)**:ORM是将数据库中的表映射为Java类,表中的记录映射为类的实例,列映射为类的属性。这样,开发者可以避免直接编写SQL语句,而是通过Java对象进行数据操作。 2. **配置文件**:Hibernate...

    hibernate多数据库配置

    在 Hibernate 中配置多数据库,并自由切换,可以使用 Spring 框架来实现。下面是一个简单的配置示例: 首先,创建一个父数据源(parentDataSource),用于配置多个数据源共有的信息: ```xml ...

    hibernate数据库访问接口设计

    在Hibernate中,数据库表对应于Java类(Entity),表中的行对应于类的实例。使用注解或XML文件进行映射,定义类属性与数据库字段的对应关系,如主键、外键、索引等。 ### 7. Cascade 和 Lazy Loading `Cascade` ...

    Hibernate ORM - 继承关联关系之union-subclass

    总的来说,“union-subclass”是Hibernate提供的一种处理继承关系的方法,它允许我们有效地将复杂的面向对象设计映射到数据库中,同时也为我们的查询提供了灵活性。在实际开发中,熟练掌握和运用这种策略,可以提高...

    jpa/hibernate继承注解

    在联合表继承中,每个子类都有自己的独立表,同时还有一个公共的父类表。使用`@Inheritance(strategy = InheritanceType.JOINED)`来声明此策略。子类属性被存储在其各自的表中,而共享的属性则在父类表中。子类与...

    Hibernate连接数据库模拟

    在IT行业中,Hibernate是一个非常重要的Java持久化框架,它简化了与关系型数据库之间的交互,使得开发者能够以对象-关系映射(ORM)的方式处理数据。在这个“Hibernate连接数据库模拟”项目中,我们将会深入探讨如何...

    Hibernate映射继承关系的三种方案.docx

    这种方式下,Hibernate不会在数据库中体现继承关系,而是为每个类创建一个独立的表。这种方式适用于子类有很多特定的属性,而父类属性较少的情况。配置示例中,创建了一个名为Hibernate08的工程,配置了hibernate....

    Hibernate继承映射代码

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。在大型项目中,由于业务需求复杂,我们常常会使用到类的继承来组织代码结构,而Hibernate提供了对...

    Hibernate继承映射的第一种策略:每棵类继承树对应一张表

    Hibernate继承映射是将Java类的继承关系映射到数据库表的一种策略,使得对象模型的复杂性能够平滑地转化为关系数据库模型。本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承...

    Hibernate继承关系映射.pdf

    本文档主要聚焦于Hibernate框架下继承关系的映射,通过三种不同的策略——隐式继承映射、单表映射和关联表映射,来实现类的继承结构在数据库中的映射。 ### 隐式继承映射 #### 定义与配置 隐式继承映射也称为“表...

    hibernate的继承映射关系

    在ORM(Object-Relational Mapping)框架如Hibernate中,如何优雅地将这些继承关系映射到关系型数据库中,成为了一个重要的议题。本文将深入探讨Hibernate如何处理继承多态映射关系,主要通过三种不同的策略来实现这一...

    hibernate中的对象关系模型

    在Java持久化框架Hibernate中,对象关系模型(Object-Relational Mapping,ORM)是将数据库中的数据映射到Java对象的技术。它使得开发者能够用面向对象的方式来操作数据库,简化了数据库编程的过程。以下是对...

    Hibernate数据关联映射与继承策略

    在 Hibernate 中,数据关联映射是实现对象与数据库表之间关系转换的关键技术。 1. **一对一关联(One-to-One)**:一个实体对应数据库中的另一张表中的唯一一条记录。这可以通过在主键上添加外键约束或使用单独的...

    Hibernate继承映射二:每个子类一张表

    总结来说,“每个子类一张表”的继承映射策略是Hibernate提供的一种处理继承关系的方法,它将类的继承结构映射到数据库的多个表中。这种策略适合于子类具有大量特有属性的情况,但需要权衡可能带来的数据库设计复杂...

Global site tag (gtag.js) - Google Analytics