1 简单继承映射,在子类上进行映射配置,可以将父类属性直接配置在子类映射文件中。

简单例子如下:teacher类继承自Person类。

public class Person {
private int id;
private String pname; public Person() {
// TODO Auto-generated constructor stub
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
} }

Teacher

public class Teacher extends Person {
private String tschoolName; public Teacher() {
// TODO Auto-generated constructor stub
} public String getTschoolName() {
return tschoolName;
} public void setTschoolName(String tschoolName) {
this.tschoolName = tschoolName;
}
}

Teacher.hbm.xml配置文件

<hibernate-mapping
package="com.baidu.entity3"> <class name="Teacher" table="teacher">
<id name="id" column="id">
<generator class="native"></generator>
</id> <property name="pname" column="name"></property>
<property name="tschoolName" column="schoolName"></property> </class>
</hibernate-mapping>

简单测试

public void fun1(){
Teacher teacher = new Teacher();
teacher.setPname("good");
teacher.setTschoolName("南洋理工"); Configuration configuration = new Configuration();
configuration.configure();
SessionFactory sessionFac = configuration.buildSessionFactory();
Session session = sessionFac.openSession();
Transaction bt = session.beginTransaction(); session.save(teacher);
bt.commit(); session.close();
sessionFac.close(); }

2 所有类使用一张表,使用subclass属性。注意需要使用类鉴别器,这种设计方法不太符合数据库表的设计原则,会用很多空的字段产生。

继续上面的例子,新产生一个类,Engineer

public class Engineer extends Person {

    private String ecompName;

    public Engineer() {
// TODO Auto-generated constructor stub
} public String getEcompName() {
return ecompName;
} public void setEcompName(String ecompName) {
this.ecompName = ecompName;
}
}

此时配置文件只在父类Person.hbm.xml映射文件中做

<hibernate-mapping
package="com.baidu.entity3"> <class name="Person" table="person">
<id name="id" column="id">
<generator class="native"/>
</id>
<discriminator column="type"></discriminator>
<property name="pname" column="name"></property> <subclass name="Teacher" discriminator-value="teacher_">
<property name="tschoolName" column="schoolName"></property>
</subclass> <subclass name="Engineer" discriminator-value="engineer_">
<property name="ecompName" column="eompanyName"></property>
</subclass> </class> </hibernate-mapping>

注意需要使用鉴别器,discriminator位置在id属性下面,property上面。每个子类使用subclass标签区分,需要指定discriminator-value属性,表明该类属于那个类别。

3 每个类使用一张表,属性关键字joined-subclass,也是在父类的配置文件上Person.hbm.xml配置

<hibernate-mapping
package="com.baidu.entity3"> <class name="Person" table="person">
<id name="id" column="id">
<generator class="native"/>
</id>
<discriminator column="type"></discriminator>
<property name="pname" column="name"></property> <joined-subclass name="Engineer" table="engineer">
<key column="id"></key>
<property name="ecompName" column="companyName"></property>
</joined-subclass>   <joined-subclass name="Teacher" table="teacher">
<key column="id"></key>
<property name="tschoolName" column="schoolName"></property>
</joined-subclass>
</class> </hibernate-mapping>

注意:因为每个子类都要生成一张表,因此在使用joined-subclass的时候需要指定table属性来指定使用那张表。

4 所有子类使用一张表,属性关键字union-subclass。注意这种方式主键的生成方式不可以使用自增长,可以使用uuid。配置文件还是在Person.hbm.xml配置

<hibernate-mapping
package="com.baidu.entity3"> <class name="Person" table="person">
<id name="id" column="id">
<generator class="uuid"/>
</id>
<discriminator column="type"></discriminator>
<property name="pname" column="name"></property> <union-subclass name="Engineer" table="engineer">
<property name="ecompName" column="companyName"></property>
</union-subclass> <union-subclass name="Teacher" table="teacher">
<property name="tschoolName" column="schoolName"></property>
</union-subclass>
</class> </hibernate-mapping>

hibernate中继承映射保存的更多相关文章

  1. hibernate中一对一映射

    一.hibernate中一对一映射有两种 1 主键方式,一张表的主键是通过另一张表的主键生成的 2 外键方式,一张表添加外键引用另一张表的主键,并添加唯一unique约束 二.下面进行简单例子,用户和 ...

  2. Hibernate中的映射关系(一对多)

    在数据库中表和表之间的关系有几种,(一对一,一对多,多对多)一对一关系:可以选择任意一方插入外键(one-to-one:one-to-one<--->many-to-one[unique= ...

  3. hibernate中的映射

    hibernate中的映射是指Java类和数据库表中的属性来进行关联,然后通过类来操作数据库中,这就是简单的映射.

  4. hibernate笔记--继承映射关系的三种实现方式

    单表继承映射(一张表): 假设我们现在有三个类,关系如下: Person类有两个子类Student和Teacher,并且子类都具有自己独有的属性.这种实体关系在hibernate中可以使用单表的继承映 ...

  5. Hibernate之继承映射

    1. Hibernate支持三种继承映射策略: –使用 subclass进行映射:将域模型中的每一个实体对象映射到一个独立的表中,也就是说不用在关系数据模型中考虑域模型中的继承关系和多态. –使用 j ...

  6. 初识Hibernate之继承映射

         前面的两篇文章中,我们介绍了两张表之间的各种相互关联映射关系,但往往我们也会遇到两张表甚至多张表之间共有着多个相同的字段.例如: 如图,student表和teacher表共同具有id,nam ...

  7. Hibernate的继承映射

    对象模型示例: 继承映射的实现方式有以下三种: (一)每棵类继承树一张表 (二)每个类一张表 (三)每个子类一张表 (一)每棵类继承树一张表 关系模型如下: 映射文件如下: <hibernate ...

  8. hibernate中关系映射的配置问题

    部门和员工属于一对多的关系 员工的账户属于一对一关系 账户和权限属于多对多关系 department.hbm.xml 1 <hibernate-mapping> 2 <class n ...

  9. 【转】hibernate中的映射文件xxx.hbm.xml详解总结

    一.Hibernate映射文件的作用: Hibernate映射文件是Hibernate与数据库进行持久化的桥梁 二,Hibernate映射文件主要内容:     (1).映射内容的定义: Hibern ...

随机推荐

  1. mogodb优化

    http://snoopyxdy.blog.163.com/blog/static/6011744020157511536993/ http://www.csdn.net/article/2012-1 ...

  2. 【spring boot】启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案

    导入的一个外部的spring boot项目,运行启动类,出现错误:找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 解决方案: 将所有错误处理完成后,再 ...

  3. Linux命令执行的屏幕输出内容重定向到日志文件

    摘要: 作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 快速mark一下这个命令细节,免得以后使用又忘记了 大家都知道可以用echo来输出内容到 ...

  4. ARC中的@autoreleasepool还有作用吗?

    ARC中的@autoreleasepool还有作用吗? QUESTION For the most part with ARC (Automatic Reference Counting), we d ...

  5. BP反向传播算法的工作原理How the backpropagation algorithm works

    In the last chapter we saw how neural networks can learn their weights and biases using the gradient ...

  6. 2 cocos2dx 3.0 源码分析-Director

    Director 导演类, 这个类在整个引擎中担当着最重要的角色, 先看看它是如何初始化的,它共管理了哪些内容呢?    1初始化- 更新处理Scheduler   Scheduler 这个类负责用户 ...

  7. 彻底解决Odoo8.0单时区应用中的时区问题

    原文地址:http://shine-it.net/index.php/topic,17001.0.html 由于数据库中存储的是UTC时区,默认情况下数据导出和group by都存在时区问题.彻底解决 ...

  8. go语言基础之不同目录

    1.不同目录 不同目录,包名不一样 调用不同包里面的函数,格式:包名,函数名() 调用别的包的函数,这个包函数名字如果是小写,无法让别人调用,要想别人能调用,必须首字母大写. 需要配置环境变量 临时配 ...

  9. 第9章 初识STM32固件库—零死角玩转STM32-F429系列

    第9章     初识STM32固件库 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...

  10. 安装Office2007时出现1706错误的解决方案

    前几天,重做了系统.周末因为接到一笔单子,很兴奋啊.第一次接到私活.然后就装Office2007,打算看需求的.居然安装的时候出现错误,提示1706错误,后面一串错误信息,也懒得看,以为是文件坏了. ...