只是建一个表,所有属性都包括在此表。使用discriminator 到父和子类之间的区别。

1)父类(Article):

public class Article {
private Integer id;
private String title;
private String content;
private Date postTime; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public String getContent() {
return content;
} public void setContent(String string) {
this.content = string;
} public Date getPostTime() {
return postTime;
} public void setPostTime(Date postTime) {
this.postTime = postTime;
} @Override
public String toString() {
return "Article [id=" + id + ", title=" + title + ", content="
+ content + ", postTime=" + postTime + "]";
} }

2)子类(Topic):

public class Topic extends Article {
private Integer type; public Integer getType() {
return type;
} public void setType(Integer type) {
this.type = type;
} @Override
public String toString() {
return "Topic [id=" + getId() + ", title=" + getTitle() +
", content=" + getContent() + ", postTime=" +
getPostTime() + ", type=" + type + "]";
}
}

3)子类(Reply):

public class Reply extends Article {
private Integer floor; public Integer getFloor() {
return floor;
} public void setFloor(Integer floor) {
this.floor = floor;
} @Override
public String toString() {
return "Reply [id=" + getId() + ", title=" + getTitle() +
<span style="white-space:pre"> </span>", content=" + getContent() + ", postTime=" +
<span style="white-space:pre"> </span> getPostTime() + ", floor=" + floor + "]";
}
}

4)持久化层:

package extends_1;

import java.sql.Date;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test; public class ExtendsDao { /**
* save 方法
*/
@Test
public void testSave() {
Session session = SessionFactoryTools.getSession();
Transaction tx = null;
try {
tx = session.beginTransaction(); // ========================================== // 新建对象并设置属性
Article article = new Article();
article.setTitle("article");
article.setContent("你是我的玫瑰!");
article.setPostTime(new Date(20140731)); Topic topic = new Topic();
topic.setTitle("topic"); Reply reply = new Reply();
reply.setTitle("reply"); // 保存对象
session.save(article);
session.save(topic);
session.save(reply); // ============================================ tx.commit();
} catch (RuntimeException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
} /**
* getById方法
*/
@Test
public void testGetById() {
Session session = SessionFactoryTools.getSession();
Transaction tx = null;
try {
tx = session.beginTransaction(); // ======================================================== // 读取数据并输出
Article article = (Article) session.get(Article.class, 1);
System.out.println(article); Article topic = (Article) session.get(Topic.class, 2);
System.out.println(topic); Article reply = (Article) session.get(Reply.class, 3);
System.out.println(reply); // ========================================================== tx.commit();
} catch (RuntimeException e) {
if (tx != null) {
tx.rollback();
}
throw e;
} finally {
session.close();
}
}
}

5)Article.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"> <hibernate-mapping package="extends_1"> <!--
discriminator-value属性:
用于鉴别是哪个类的一个值,表示这个值就是这个类。 假设不写。默觉得类的全限定名。
-->
<class name="Article" table="article discriminator-value="Article">
<id name="id">
<generator class="native"/>
</id> <!-- 用于鉴别是什么类型的一个类 -->
<discriminator type="string" column="class_">
</discriminator> <property name="title"/>
<property name="content" type="text" length="10000"/>
<property name="postTime" type="timestamp"/> <!-- 子类:Topic -->
<subclass name="Topic" discriminator-value="Topic">
<property name="type"></property>
</subclass> <!-- 子类:Reply -->
<subclass name="Reply" discriminator-value="Reply">
<property name="floor"></property>
</subclass> </class> </hibernate-mapping>

6)主文件配置略。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Hibernate_10_继承的例子_单表的更多相关文章

  1. SQL基本查询_单表查询(实验二)

    SQL基本查询_单表查询(实验二) 查询目标表结构及数据 emp empno ename job hiedate sal comn deptno 1007 马明 内勤 1992-6-12 4000 2 ...

  2. Hibernate中的HQL的基本常用小例子,单表查询与多表查询

    <span style="font-size:24px;color:#3366ff;">本文章实现HQL的以下功能:</span> /** * hql语法: ...

  3. mysql_数据查询_单表查询

    1.单表查询: 1.1选中表中若干列: SELECT子句的<目标列表达式>可以是表中属性列,也可以是表达式,还可以是字符常量. SELECT Sname,'year of birth:', ...

  4. 1.SSM整合_单表的增删改查

    目标:增删改查 环境:Maven+Eclipse+Tomcat7+JDK7 思维导图: 表结构 目录结构 依赖 <dependencies> <dependency> < ...

  5. Oracle 优化器_访问数据的方法_单表

    Oracle 在选择执行计划的时候,优化器要决定用什么方法去访问存储在数据文件中的数据.我们从数据文件中查询到相关记录,有两种方法可以实现:1.直接访问表记录所在位置.2.访问索引,拿到索引中对应的r ...

  6. ActiveRecord-连接多张表之单表继承

    ActiveRecord-连接多张表之单表继承 1. 基本概念 Rails提供了两种机制,可以将复杂的面向对象模型映射为关系模型,即所谓的单表继承(single-table inheritance)和 ...

  7. python flask_sqlalchemy 多态 polymorphic 实现单表继承

    sqlalchemy 多态 polymorphic 实现单表继承 sqlaclchemy中的单表继续就是以一个模型类为基类,其他模型类继承基类,所有模型类的的数据都存一张表里面(也可以是多张,只不过基 ...

  8. springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetomany

    springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetoma ...

  9. $Django 模板层(模板导入,继承)、 单表*详(增删改查,基于双下划线的查询)、static之静态文件配置

    0在python脚本中使用django环境 import osif __name__ == '__main__':    os.environ.setdefault("DJANGO_SETT ...

随机推荐

  1. 构造NFS

    一.设备nfs-utils 伺服器: [root@server05 ftp]# yum install nfs-utils 这时会自己主动安装rpcbind需将此服务重新启动nfs服务才干启动 cli ...

  2. MongoDB时间处理问题

    MongoDB保存到数据库的时候,默认为UTC时间,在数据库保存时,会和当前时间有个间隔,差距为8小时. 在读取的时候,需要再次转换回来,比较麻烦. 其实,Mongo本身就已经提供了相应的处理方法,即 ...

  3. CodeForces 484A Bits

    意甲冠军: 10000询价  每次查询输入L和R(10^18)  在区间的二进制输出指示1大多数数字  1个数同样输出最小的 思路: YY一下  认为后几位全是1的时候能保证1的个数多  那么怎样构造 ...

  4. 【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

    内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做 ...

  5. 由<a href = "#" > 引发的思考

    原文:由<a href = "#" > 引发的思考 前阵子在一个移动项目中,通过 <a href = "#" >  的方式 绑定clic ...

  6. newlisp 接受jenkins带空格的参数

    jenkins有一个参数text种类,它能够以文本的段落拷贝作为参数 newlispThe program receives parameters are separated by spaces, 更 ...

  7. csdn仍是&quot;待定&quot;对?

    正如标题,我的博客会审查,?我们见证.如此反复.考虑到该博客平台的变化.              看来,这次最终逃脱被"待审核",看来再也不用受这个困扰了,希望以后CSDN可以在 ...

  8. HTML5 3D翻书效果(双面效应)

    最后使用HTML5翻书效果达到测试,比较简单,它的升级版是 最后一个问题: 1)后,原来的页面连环画将成为一面镜子 2)无法实现双面翻书. 3)明显感觉页面似有近遮挡标志. 这次的升级版本号实现过程比 ...

  9. Android docs4.3API

    查找在线课程,加速进入Android docs API,最主要的原因是网上加载js文件速度慢,另一种是装google字体缓慢! import java.io.BufferedReader; impor ...

  10. ASP.NET程序读取二代身份证(附源码)

    原文:ASP.NET程序读取二代身份证(附源码) 一般来说winform应用程序解决这个问题起来时很容易的,web应用程序就麻烦一点了. 这里我说说我的解决思路: 一.你必要有联机型居民身份证阅读器一 ...