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介绍完毕了。

Hibernate4学习总结(3)--注解形式的基础映射,主键映射,基本属性映射,复合属性映射,继承映射。

Hibernate Annotation即hibernate注解,可以通过另一种方式将持久化类转化成表的相关信息,可以简化hibernate的配置文件。本文主要对Hibernate的注解进行讲解,由于...

hibernate基础,没有成功创建表,log4j:WARN No appenders could be found for logger (org.jboss.logging).

Hibernate配置文件错误提示,The content of element type "list" must match ,怎么解决呢.The content of element type "...

Hibernate基础 ( 4 )单向关联映射

关联映射即:持久化类的属性 是 引用另一持久化类的类 1.单向  N-1映射  student - school   每个学生对应一个正在就读的学校        通过学生访问学校 1.1 无连...

Hibernate基础:快速入门(4):增加数据

数据库的操作增删改查,或者CRUD是最常见的操作。这篇文章中介绍增加数据的方法...

Hibernate基础(4)

一、Hibernate查询 1. 对象导航查询 (1)根据ID查询某个客户,再查询这个客户里面所有的联系人 (2)代码: Customer customer = Session...

hibernate4的dao基础工具类

因为hibernate4的事物处理已经完善的非常好,所以spring没有做hibernate4的事务支持(也就是spring的hibernateDaoSupport),所以hibernate4和之前版...

Hibernate基础知识(4)

一、hibernate 关联关系映射 (多表映射配置 和 数据 增加、删除 )

【SSH 基础】浅谈Hibernate关系映射(4)

继上篇博客   多对多关联映射(单向)   多对多对象关系映射,需要加入一张新表完成基本映射。 Hibernate会自动生成中间表 Hibernate使用many-to-many标签来表示多对多的关...

利用log4j显示hibernate打印sql中的参数

利用log4j显示hibernate打印sql中的参数 大家都知道在 hibernate.cfg.xml 配置文件中添加以下三条配置,就可以在控制台显示执行的sql: true ...

注意Hibernate4在开发当中的一些改变

注意Hibernate4在开发当中的一些改变 Hibernate4的改动较大只有spring3.1以上版本能够支持,Spring3.1取消了HibernateTemplate,因为Hiber...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate基础_4
举报原因:
原因补充:

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