`

Hibernate:类继承的实现方式(二)--父子类各自一个表

阅读更多
将继承链中的各个类映射到数据库中的一个单独的表中

domain对象和测试代码同(一)


可以看到在关系模型中比较合理:Employee表中没有空字段,但是查询效率肯定会受影响


映射文件如下:


<?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 package="cn.itcast.hibernate.inherit2">

	<class name="Employee" table="employee" >
		<id name="id" unsaved-value="-1">
			<generator class="native" />
		</id>
		<property name="name"/>

		<joined-subclass name="Skiller" table="skiller">
			<key column="s_id"/>
			<property name="skill"/>
		</joined-subclass>
		
		<joined-subclass name="Driver" table="dirver">
			<key column="d_id"/>
			<property name="driverYears"/>
		</joined-subclass>
		
	</class>
</hibernate-mapping>


执行的sql语句如下:


Hibernate: insert into employee (name) values (?)
Hibernate: insert into employee (name) values (?)
Hibernate: insert into skiller (skill, s_id) values (?, ?)
Hibernate: insert into employee (name) values (?)
Hibernate: insert into dirver (driverYears, d_id) values (?, ?)
分享到:
评论
1 楼 Rod_johnson 2011-09-15  
学习了!真不错

相关推荐

    HIBERNATE:Hibernate 学习一--注解方式自动建表

    - `@Entity`:标记一个Java类为数据库中的一个实体表,相当于传统的Hibernate配置文件中的映射文件。 - `@Table`:用于指定实体类对应的数据库表名,可以设置其他如schema、catalog等属性。 - `@Id`:标识类的...

    基于IDEA的SSH项目之五:集成Hibernate----lib包

    在Hibernate中,每个数据库表对应一个Java实体类。实体类需要使用注解或XML配置文件来指定与数据库表的映射关系,包括主键、属性映射等。例如,使用`@Entity`注解标识实体类,`@Table`注解指定表名,`@Id`标识主键...

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    Hibernate最初作为一个独立的ORM框架,后来成为了JPA规范的参考实现之一。JPA提供了一套标准API,允许开发者在不依赖特定ORM工具的情况下编写数据库操作代码。而Hibernate通过实现JPA规范,使得开发者可以在享受...

    DmDialect-for-hibernate5.3-5.3.jar

    国产达梦数据库hibernate方言包

    spring3.2+ Hibernate 3.5.4-Final+struts2 整合开发jar包

    总结来说,这个压缩包提供了一套完整的开发环境,包括Spring、Hibernate和Struts2的集成,以及它们各自所需的依赖,如数据库连接、模板引擎和Java服务器端技术,便于开发者快速搭建和运行一个基于Java的三层架构Web...

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar

    hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码

    hibernate-jpa-2.0-api-1.0.1.Final.jar

    hibernate-jpa-2.0-api-1.0.1.Final.jar

    HibernateTools-3.2.4.Beta1-R200810311334.zip

    《HibernateTools ...总的来说,HibernateTools 3.2.4 Beta1是一个强大的工具集,它在提升开发效率的同时,也降低了数据库管理和ORM的复杂性。对于任何使用Hibernate或者JPA的Java开发者来说,都是不可或缺的助手。

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip

    JPA(Java Persistence API)是Java平台上的一个标准,用于处理Java对象与关系数据库之间的映射。它定义了一套规范,使得开发人员可以使用面向对象的方式进行持久化操作,而无需关心底层的SQL语法。JPA 2.1版本引入...

    Hibernate-Extension Middlegen-Hibernate

    1. **安装配置**:首先,你需要下载并配置Middlegen-Hibernate的相关依赖库,如题目中提到的`hibernate-extensions-2.1.3`、`apache-ant-1.8.4`、`Middlegen-Hibernate-r5`和`hibernate-2.1`。Apache Ant是Java项目...

    Hibernate继承映射二:每个子类一张表

    在“每个子类一张表”策略中,系统会为每个子类创建一个独立的表,主表通常存储基类的属性,而子类的特有属性则存放在各自对应的表中。这样做的好处是可以清晰地将不同类的属性分离,避免了单一表的复杂性,但可能会...

    hibernate-configuration-3.0.dtd、hibernate-mapping-3.0.dtd

    例如,`&lt;class&gt;`元素表示一个Java类,它的`name`属性是类的全限定名,`table`属性指定对应的数据库表。`&lt;id&gt;`元素定义主键,`&lt;property&gt;`元素则映射类的属性到表的列。此外,`hibernate-mapping-3.0.dtd`还支持更...

    hibernate-distribution-3.3.2.GA-dist.zip

    Hibernate 是一个开源的 ORM 解决方案,它允许开发者使用面向对象的编程方式来操作关系型数据库,避免了传统的 JDBC 编程带来的复杂性。通过提供一套API,Hibernate 可以自动处理对象的持久化,使得Java对象与数据库...

    hibernate-jpa-2.0-api-1.0.0-CR-1.jar

    java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题

    hibernate-core-4.2.0.Final-sources.jar

    hibernate-core-4.2.0.Final-sources.jar hibernate的源代码

    Hibernate继承映射的第一种策略:每棵类继承树对应一张表

    总之,单一表继承策略是一种简单且直观的Hibernate继承映射方式,适合类继承层次结构不深且子类数量较少的情况。但在大型项目或复杂的类继承结构中,可能需要考虑其他策略,如`JOINED`或`TABLE_PER_CLASS`。理解并...

    hibernate-release-4.1.4

    【标题】"hibernate-release-4.1.4" 是Hibernate框架的一个版本发布,具体为4.1.4.Final。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发人员在处理数据库时使用面向对象的概念,极大地简化了数据库...

    hibernate_3.3.2GA中文参考手册

    - **实现继承(Inheritance)**: 支持继承的实现方式。 - **实现equals()和hashCode()**: 重写equals()和hashCode()方法以支持正确的对象比较。 - **动态模型(Dynamic models)**: 动态创建模型。 - **元组片断映射...

    传智播客-hibernate框架开发视频第day01-day04资料

    - 实体类和注解:创建实体类并使用Hibernate注解进行字段映射。 - Session工厂与Session:理解Session工厂的概念,以及Session在数据操作中的角色。 2. **Day02:持久化操作** - CRUD操作:掌握如何通过...

    Hibernate---继承

    Hibernate---继承 Hibernate---继承

Global site tag (gtag.js) - Google Analytics