hibernate基础_4

原创 2005年05月17日 10:44:00

本篇继续介绍hibernate中的inheritedmapping。

不同与上一篇,这次我们选择选用不同的table来存储相应的父类与子类。

考虑这样一个继承关系mammal与cat,dog。对应的类如下

public class Mammal {
    private int id;
    private String name;
}

public class Cat extends Mammal {
    private String kind;
    private int scratchLevel;
}

public class Dog extends Mammal {
    private String variety;
    private int biteLevel;
}

由于我们采用不同的table来存储相应的类数据,所以在设计上要选择较比巧妙的方法,即在cat与dog对应的table中采用主键映射的方法。我们将mammal对应的table中的id作为cat与dog的外键,并且在cat与dog对应的table中只存储以下的字段信息:

create table cat(
   cat_id int primary key not null,
   kind varchar(10) not null,
   scratchlevel int not null
);

create table dog(
   dog_id int primary key not null,
   variety varchar(15) not null,
   bitelevel int not null
);

发现了没?cat与dog从mammal中继承的name域在table中没有相应的字段来存储。由于采用了外键的映射,我们将id与name存入mammal的table中,这样可以节省存储空间,并且很容易进行查找。

那么,外键对应的hibernate描述符如何写呢?我们选用joined-subclass来实现。cat相应的描述如下

 <joined-subclass name= "inheritedmapping2.Cat" table= "CAT" >
      <key column= "CAT_ID" />
      <property name= "kind" type= "string" column= "KIND" />
      <property name= "scratchLevel" type= "int" column= "SCRATCHLEVEL" />
</joined-subclass>

该片断在Mammal.hbm.xml中。其实除了joined-subclass这个描述字符串以外,其他的都同一般的描述符的一样。通过key,我们将cat table的id与mammal table的id相联系,这样就实现了cat的两个table分开存储。dog中的映射片断与cat相似,改改table与property的值就好了。

查询时,同上一篇一样

List cats = session.find( "from Cat" );

将选出数据库中全部的cat对象, "from Mammal"将选出所有的对象。

到此,hibernate的inheritedmapping介绍完毕了。

Hibernate基础--Hibernate(你必须要懂得基础)

01_Hibernate概述 作者: 风离紫竹--tryzq521@126.com 1.Hibernate是一款工作在持久化层的大型、开源、免费的ORM框架。 2.持久化 ...
  • u011200604
  • u011200604
  • 2016年06月17日 00:01
  • 3843

Hibernate自学详细笔记

Hibernate详细自学笔记,初学者快来看看吧!!!!
  • wangyang1354
  • wangyang1354
  • 2015年08月31日 21:23
  • 1280

Hibernate底层技术简介 CGLIB

    从可以看到,基于ASM的开发很复杂,需要了解JVM的底层编码。CGLIB以ASM为基础, 对ASM的功能进行了扩展和封装,提供了更友好的API,部分通用的模版和高级的功能实现。CGLIB的具体...
  • nomad2
  • nomad2
  • 2007年01月21日 12:16
  • 3852

Spring 4和Hibernate 4集成教程第1部分:XML配置

在企业Java应用程序开发中,也许Spring和Hibernate集成是大多数程序员正在寻找和面对的最需要的主题之一。 Spring是领先的企业应用程序框架,Hibernate是领先的ORM框架,所以...
  • evangel_z
  • evangel_z
  • 2017年04月10日 11:23
  • 1262

Hibernate学习笔记(十)Hibernate 高级配置

一:配置数据库连接池 反问数据库,需要不断的创建和释放连接,假如访问量大的话,效率比较低级,服务器消耗大; 使用数据库连接池,我们可以根据实际项目的情况,定义连接池的连接个数,从而可以实现从连接池...
  • z956281507
  • z956281507
  • 2017年07月05日 16:43
  • 105

Hibernate基础(4)

一、Hibernate查询 1. 对象导航查询 (1)根据ID查询某个客户,再查询这个客户里面所有的联系人 (2)代码: Customer customer = Session...
  • imail2016
  • imail2016
  • 2017年06月27日 17:40
  • 166

hibernate4.3入门教程,使用maven配置

本文介绍hibernate4的maven配置, pom.xml: 123456789101112131415161718192021222324252627282930313233343536...
  • leon1418
  • leon1418
  • 2014年01月04日 21:44
  • 4118

hibernate快速入门案例

开发流程 1.创建一个项目 2.画出简单的项目框架图 3.引入hibernate开发包(http://www.hibernate.org) hibernate开发方式的三种方式: 1由Domain...
  • lightsu_1029
  • lightsu_1029
  • 2016年02月23日 21:54
  • 756

hibernate4 使用及 新特性

hibernate4.x已经在官网出现一段时间了. 下载地址: http://hibernate.org/orm/downloads/ 使用hibernate4所需要的jar包 在lib\re...
  • y515274057
  • y515274057
  • 2014年10月27日 17:06
  • 429

Hibernate4 新特性

Hibernate4 废弃了之前创建SessionFactory的方法,即由原来的                 Configuration cfg = new Configuration(); ...
  • wu843820873
  • wu843820873
  • 2015年06月07日 16:17
  • 830
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate基础_4
举报原因:
原因补充:

(最多只允许输入30个字)