在对象模型之中有一种继承关系,当然也可以把这些关系映射到关系型数据库表中比如说有一个种族,他的名字叫做People,
package com.hibernate;
public class People {
private int id ;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
五百年后有了American,Chinese...他们都有人People继承而来,现在我们需要把他们映射到数据库中
package com.hibernate;
public class Chinese {
private String pingpong; // 继承Peopel
public String getPingpong() {
return pingpong;
}
public void setPingpong(String pingpong) {
this.pingpong = pingpong;
}
}
package com.hibernate;
public class American extends People { // 继承Peopel
private String bascketball;
public String getBascketball() {
return bascketball;
}
public void setBascketball(String bascketball) {
this.bascketball = bascketball;
}
}
现在配置配置文件方便映射到数据库中
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.hibernate.People">
<id name="id">
<generator class="native"/> <!--自增方式生成主键--->
</id>
<discriminator column="type" type="string"/> <!--鉴别器--->
<property name="name"/>
<subclass name="com.hibernate.Chinese" discriminator-value="C">
<property name="pingpong"/>
</subclass>
<subclass name="com.hibernate.American" discriminator-value="A">
<property name="bascketball"/>
</subclass>
</class>
</hibernate-mapping>
好了,现在可以写一个数据库映射的导出类将Peopel,Chinese,Americand都同过Hibernate继承映射到一张表里面
package com.hibernate;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class ExportDB {
public static void main(String[] args) {
Configuration cfg = new Configuration().configure();
SchemaExport schemaExport = new SchemaExport(cfg);
schemaExport.create(true, true);
}
}
运行SchemaExport,OK。 Hibernate继承映射到一张表里面了
mysql> desc people;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| type | varchar(255) | NO | | NULL | |
| name | varchar(255) | YES | | NULL | |
| pingpong | varchar(255) | YES | | NULL | |
| bascketball | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
这种Hibernate继承映射,是一种比较常用的方式,还有另外两种 Hibernate继承映射,其他的两种 Hibernate继承映射生成的表和类都是一一对应的,即有多张表。一般那样的 Hibernate继承映射都比较少用,今天就不讨论了
分享到:
相关推荐
本主题将深入探讨"Hibernate继承映射+C3P0代码"的相关知识点。 首先,让我们理解Hibernate的继承映射。在Java中,我们可以创建一个基类,然后派生出多个子类,这种设计模式在数据库中也可以被映射出来。Hibernate...
Hibernate继承映射是将Java类的继承关系映射到数据库表的一种策略,使得对象模型的复杂性能够平滑地转化为关系数据库模型。本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承...
《Hibernate继承映射详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作。在实际项目中,我们常常会遇到类的继承关系,而Hibernate提供了强大的支持来处理这种继承关系的...
**标题:“Hibernate继承映射(Annotation)详解”** 在Java持久化框架Hibernate中,继承映射是一种关键特性,它允许开发者将对象模型的继承结构映射到数据库的表结构。在传统的面向对象编程中,继承是实现代码复用和...
《Hibernate继承映射详解》 在Java开发中,对象关系映射(ORM)框架如Hibernate大大简化了数据库操作。Hibernate不仅提供了对基本数据类型的映射,还支持复杂的数据结构,如继承关系的映射。本篇文章将深入探讨...
本篇文章将详细探讨Hibernate继承映射的策略,特别是“每个具体类一张表”(Table Per Concrete Class)的映射方式。 在面向对象编程中,继承是常见的代码复用手段,但在关系型数据库中,这种概念并不直接对应。...
本文将详细探讨“Hibernate继承映射的第一种策略:每个类对应一张表”的概念、实现方式以及其优缺点。 首先,我们需要理解Hibernate继承映射的基本策略。在面向对象编程中,类继承是常见的代码复用手段,但在数据库...
针对hibernate的继承映射部分做了几个测试的例子,更加直观的阐述了继承映射的几种方式以及对应的表结构方式,文件被分割成3部分 http://download.csdn.net/source/259075 http://download.csdn.net/source/259072 ...
本篇主要探讨的是Hibernate中的继承映射策略,特别是“每个子类一张表”(Table per subclass)的方式。这种方式也被称为单表继承或多表继承,是Hibernate支持的四种继承映射策略之一。了解并熟练掌握这种映射模式...
### 用Hibernate映射继承关系 #### 14.1 继承关系树的每个具体类对应一个表 在Hibernate中映射继承关系时,一种常见的策略是将继承关系树的每个具体类映射到单独的数据库表中。这种方法称为**表/类映射**(Table/...
本篇文章主要探讨的是Hibernate的继承映射策略,特别是“每个类分层结构一张表”(Table per Concrete Class)的方式。这种映射策略是Hibernate提供的多种继承映射方案之一,适用于处理复杂的对象模型。 首先,我们...
在Java世界中,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本教程主要探讨的是Hibernate中的“继承映射...学习并实践这些例子,有助于巩固对Hibernate继承映射的理解,并提升在实际项目中的应用能力。