1.示图

2.Animal.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-7-20 10:48:06 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.eduask.pojo.Animal" table="Animal">
<id name="id" type="int">
<column name="ID" />
<generator class="assigned"/>
</id>
<discriminator column="age" type="string"></discriminator>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<!--使用subclass时必定使用discriminator,且放在id下面 -->
<subclass name="com.eduask.pojo.Cat" discriminator-value="10">
<property name="color"></property>
</subclass>
<!--使用union-subclass -->
<!-- <union-subclass name="com.eduask.pojo.Cat" table="Cat">
<property name="color"></property>
</union-subclass>
-->
</class>
</hibernate-mapping>
3.CatTest.java
package com.eduask.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Before;
import org.junit.Test;
import com.eduask.pojo.Cat;
import com.eduask.util.HibernateUtil;
public class CatTest {
private SessionFactory sessionFactory;
@Before
public void setUp(){
sessionFactory=HibernateUtil.getSessionFactory();
}
@Test
public void catTest(){
Session session=sessionFactory.openSession();
Transaction tr=session.beginTransaction();
Cat c=new Cat();
c.setName("小猫之一");
c.setColor("black");
session.save(c);
tr.commit();
session.close();
}
}
4.使用subclass程序运行之后,查看数据库如下:

5.使用union-subclass程序运行之后,查看数据库:

分享到:
相关推荐
在Hibernate中映射继承关系时,一种常见的策略是将继承关系树的每个具体类映射到单独的数据库表中。这种方法称为**表/类映射**(Table/Class Mapping),是最直观且简单的映射方式。它不考虑抽象类或继承关系,而是...
本主题将深入探讨"Hibernate继承映射+C3P0代码"的相关知识点。 首先,让我们理解Hibernate的继承映射。在Java中,我们可以创建一个基类,然后派生出多个子类,这种设计模式在数据库中也可以被映射出来。Hibernate...
本文档主要聚焦于Hibernate框架下继承关系的映射,通过三种不同的策略——隐式继承映射、单表映射和关联表映射,来实现类的继承结构在数据库中的映射。 ### 隐式继承映射 #### 定义与配置 隐式继承映射也称为“表...
总结起来,"每个类都对应一张表"的继承映射策略在Hibernate中是一种直接且易于理解的方法,适合那些每个类都有独特属性的情况。然而,它可能不适合所有场景,特别是当子类众多或者需要减少数据冗余时。在实际应用中...
### hibernate继承关系映射和Java反射机制的运用 #### 一、何时使用hibernate继承关系映射 在实际的软件开发过程中,经常会遇到多个实体类之间存在共同的属性和行为的情况。例如,在一个系统中,可能有许多不同的...
### Hibernate的继承多态映射关系详解 在软件开发领域,特别是使用面向对象编程语言如Java进行开发时,我们经常需要处理复杂的类继承关系。在ORM(Object-Relational Mapping)框架如Hibernate中,如何优雅地将这些...
在Java世界中,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。本教程主要探讨的是Hibernate中的“继承映射...学习并实践这些例子,有助于巩固对Hibernate继承映射的理解,并提升在实际项目中的应用能力。
本话题主要探讨的是Hibernate 3.2版本中的类继承关系处理,这是面向对象编程中常见的概念,但在数据库映射时需要特殊考虑。在Hibernate中,类继承关系的处理允许我们创建更加灵活和可扩展的对象模型。 在Hibernate ...
在实际项目中,我们经常遇到类之间的继承关系,这些关系需要在数据库中得以体现,这就是继承映射的作用。 在Java中,类的继承可以是单继承或多层继承,但在关系型数据库中,并没有直接支持类继承的概念。Hibernate...
Hibernate继承映射是将Java类的继承关系映射到数据库表的一种策略,使得对象模型的复杂性能够平滑地转化为关系数据库模型。本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承...
在本教程中,我们将深入探讨Hibernate中的继承映射策略,特别是"Table Per Class"策略,这是Java对象模型到关系数据库映射的一种方法。在Hibernate框架中,继承是通过ORM(对象关系映射)来实现的,它允许我们将复杂...
总结来说,Hibernate的继承映射策略提供了灵活的方法来处理对象模型与数据库模型之间的关系,开发者可以根据项目的特性和需求选择最适合的映射方式。在实现时,需要确保配置文件(如hibernate.cfg.xml)的正确设置,...
Hibernate继承映射是将Java中的继承关系映射到数据库的关系模型中。在Java中,一个基类可以有多个子类,而在数据库中,这些子类可以共享一张表或者各自拥有独立的表,这取决于我们选择的继承策略。Hibernate提供了四...
总结来说,“每个子类一张表”的继承映射策略是Hibernate提供的一种处理继承关系的方法,它将类的继承结构映射到数据库的多个表中。这种策略适合于子类具有大量特有属性的情况,但需要权衡可能带来的数据库设计复杂...
Hibernate的继承映射 --每个继承层次一张表 -- 每个具体类一张表 -- 每个类一张表
现在,我们开始创建一个简单的Hibernate继承映射示例。假设我们有一个基类`Person`,两个子类`Student`和`Teacher`。在Java代码中,我们需要定义这些类并添加相应的注解: ```java @Entity @Inheritance(strategy =...
本篇文章主要探讨的是Hibernate的继承映射策略,特别是“每个类分层结构一张表”(Table per Concrete Class)的方式。这种映射策略是Hibernate提供的多种继承映射方案之一,适用于处理复杂的对象模型。 首先,我们...