`
esffor
  • 浏览: 1372085 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

根据类分层结构设计Hibernate Mapping与数据库表结构

阅读更多

首先,有三个实体对象User,Student, Teacher

其中三者共同的属性是name,password,fullname,均定义在User中,Student和Teacher继承User

用每个类分层的方式进行mapping映射,只需要用到一个表userinfo就可以描述以上关系

但需要增加一个user_type字段

 

<class table="userinfo" name="cn.hxex.exam.model.User">
  
<id name="id" column="ID">
      
<generator class="uuid.hex"/>
   
</id>
    
<property name="name" column="NAME"/>
    
<property name="password" column="PASSWORD"/>
    
<property name="fullname" column="FULLNAME"/>
     
     
<subclass name="cn.hxex.exam.model.Student" discriminator-value="student">
          
<many-to-one column="CLASS_ID" cascade="save-update" name="classes"/>
     
<subclass>
      
<subclass name="cn.hxex.exam.model.Teacher“ discriminator-value="teacher">
          
<set cascade="all" lazy="true" table="TEACHER_CLASS" name="classes">
             
<key column="TEACHER_ID"/>
              
<many-to-many class="cn.hxex.exam.model.Classes" column="CLASS_ID"/>
           
</set>
       
<subclass>
</class>

 当执行from User 时候,只需要执行select * from userinfo ,可以减少sql执行次数

 当执行from Student ,hibernate会自动执行select * from userinfo where user_type="student";

同样,在进行对象持久话操作时,也会根据对象类型自动设置user_type字段值



分享到:
评论

相关推荐

    Hibernate继承映射一:每个类分层结构一张表

    在Java世界中,ORM(Object-Relational Mapping)框架如Hibernate极大地简化了数据库操作,将对象与数据库表之间的映射关系进行了抽象。本篇主要探讨的是Hibernate中的继承映射策略,特别是“每个类分层结构一张表”...

    hibernate.doc

    综上所述,Hibernate通过ORM技术,实现了Java对象与数据库表之间的映射,简化了数据库操作,使得开发者可以更专注于业务逻辑,而不是底层的数据访问细节。在分层架构中,Hibernate作为持久层,提升了系统的可维护性...

    hibernate 体系结构与配置 参考文档(html)

    混合使用“每个类分层结构一张表”和“每个子类一张表” 9.1.5. 每个具体类一张表(Table per concrete class) 9.1.6. Table per concrete class, using implicit polymorphism 9.1.7. 隐式多态和其他继承映射...

    hibernate学习文档

    - **由 Domain Object 到 Mapping 到 DB**:这是 Hibernate 官方推荐的方式,先定义 Java 实体类,然后创建对应的映射文件,最后根据实体类和映射文件生成数据库表。 - **由 DB 到 Mapping 和 Domain Object**:这种...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    9.1.4. 混合使用“每个类分层结构一张表”和“每个子类一张表” 9.1.5. 每个具体类一张表(Table per concrete class) 9.1.6. Table per concrete class, using implicit polymorphism 9.1.7. 隐式多态和其他继承...

    Hibernate框架详细讲解

    Hibernate作为一款优秀的持久化框架,它通过提供一种对象关系映射(Object-Relational Mapping,简称ORM)的方式,实现了Java对象与关系型数据库表之间的映射,从而极大地简化了数据访问层的复杂度。 - **Hibernate...

    Hibernate教程1_从入门到精通

    例如,Java类的属性名与数据库表中的字段名的对应关系等。 #### 七、Hibernate的准备工作 1. **添加Hibernate库到项目**: - 将Hibernate的核心库以及其他依赖库添加到项目的类路径中。 2. **添加配置文件** ...

    汤阳光Hibernate3.6(基础).doc

    - Hibernate作为持久化层的实现框架,负责将Java对象映射到数据库表,简化数据操作。 3. **软件模型**: - **概念模型**:描述业务领域的实体和它们的关系,不涉及行为。 - **关系数据模型**:基于概念模型建立...

    Hibernate原理与配置快速入门 pdf

    - **映射文件**:定义了`Message`类与数据库表的映射关系,例如如何将`id`属性映射为表的主键字段。 - **操作流程**: - 使用`SessionFactory`创建`Session`对象。 - 通过`Session`对象保存`Message`对象到数据库...

    Hibernate使用技巧

    ### Hibernate使用技巧详解 ...通过上述分析,我们可以看出,合理地设计应用程序的分层结构,利用Hibernate这样的持久化框架,可以极大地提高软件的可维护性和可扩展性,同时降低数据库操作的复杂度,提升开发效率。

    最经典的hibernate教程_从入门到精通_第一篇(共四篇)

    4. XML Mapping:Hibernate映射文件,定义了对象与数据库表之间的映射关系。 5. Database:实际存储数据的关系型数据库。 JDBC和Hibernate虽然都用于数据库操作,但它们在使用上有显著区别。JDBC直接使用SQL语句...

    Hibernate基础教程

    - **映射文件**:配置实体类与数据库表之间的映射关系。 - **存储**:先存储父实体(对象持久化状态),再保存子实体。 - **加载数据**:根据父实体加载子实体。 #### 一对一主键关联映射 一对一关联是指两个实体...

    经典hibernate教程_从入门到精通(第一篇,共四篇).ppt

    - XML Mapping:Hibernate映射文件,描述对象与表的映射关系。 - Database:数据库,存放持久化对象的数据。 5. **JDBC与Hibernate的比较** - 相同点:两者都是Java数据库操作的中间件,非线程安全,需及时关闭...

    Struts_Hibernate.pdf

    通过ORM(Object-Relational Mapping),Hibernate将数据库表映射为Java类,实现了对象与数据库记录的透明转换。实体类通过注解或XML配置文件定义与数据库表的对应关系,Hibernate会自动处理SQL的生成和执行。 在...

    孙卫琴Hibernate

    它通过XML或注解定义映射文件,将Java对象(域对象)与数据库表进行绑定,从而简化了数据操作。 在域模型中,对象的状态和行为被封装,对象之间的关系可以通过关联、依赖、聚集和一般化等方式表达。理解这些概念...

    hibernate教程

    - **映射映射(Mapping)**:通过Hibernate配置文件和注解,定义Java对象与数据库表之间的对应关系。 - **集合映射**:处理对象与对象之间的关联,如一对一、一对多、多对多的关系映射。 ### 3. 域对象状态与缓存 -...

    SOA-SSH分层架构的设计与应用.doc

    Hibernate是一个优秀的Java持久层框架,它通过对象-关系映射(Object-Relational Mapping, ORM)技术,将Java对象与数据库表建立映射关系,简化了数据库操作。开发者可以通过操作对象来实现对数据库的CRUD(Create, ...

    OA办公系统struts+hibernate

    通过XML配置文件或注解,Hibernate可以将Java对象映射到数据库表,实现对象的持久化。这使得开发者无需关注底层SQL语句,只需要操作对象即可完成数据的增删改查,大大提高了开发效率。 在OA办公系统中,Struts负责...

Global site tag (gtag.js) - Google Analytics