Hibernate_10_继承的例子_单表
只是建一个表,所有属性都包括在此表。使用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_继承的例子_单表的更多相关文章
- SQL基本查询_单表查询(实验二)
SQL基本查询_单表查询(实验二) 查询目标表结构及数据 emp empno ename job hiedate sal comn deptno 1007 马明 内勤 1992-6-12 4000 2 ...
- Hibernate中的HQL的基本常用小例子,单表查询与多表查询
<span style="font-size:24px;color:#3366ff;">本文章实现HQL的以下功能:</span> /** * hql语法: ...
- mysql_数据查询_单表查询
1.单表查询: 1.1选中表中若干列: SELECT子句的<目标列表达式>可以是表中属性列,也可以是表达式,还可以是字符常量. SELECT Sname,'year of birth:', ...
- 1.SSM整合_单表的增删改查
目标:增删改查 环境:Maven+Eclipse+Tomcat7+JDK7 思维导图: 表结构 目录结构 依赖 <dependencies> <dependency> < ...
- Oracle 优化器_访问数据的方法_单表
Oracle 在选择执行计划的时候,优化器要决定用什么方法去访问存储在数据文件中的数据.我们从数据文件中查询到相关记录,有两种方法可以实现:1.直接访问表记录所在位置.2.访问索引,拿到索引中对应的r ...
- ActiveRecord-连接多张表之单表继承
ActiveRecord-连接多张表之单表继承 1. 基本概念 Rails提供了两种机制,可以将复杂的面向对象模型映射为关系模型,即所谓的单表继承(single-table inheritance)和 ...
- python flask_sqlalchemy 多态 polymorphic 实现单表继承
sqlalchemy 多态 polymorphic 实现单表继承 sqlaclchemy中的单表继续就是以一个模型类为基类,其他模型类继承基类,所有模型类的的数据都存一张表里面(也可以是多张,只不过基 ...
- springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetomany
springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetoma ...
- $Django 模板层(模板导入,继承)、 单表*详(增删改查,基于双下划线的查询)、static之静态文件配置
0在python脚本中使用django环境 import osif __name__ == '__main__': os.environ.setdefault("DJANGO_SETT ...
随机推荐
- 构造NFS
一.设备nfs-utils 伺服器: [root@server05 ftp]# yum install nfs-utils 这时会自己主动安装rpcbind需将此服务重新启动nfs服务才干启动 cli ...
- MongoDB时间处理问题
MongoDB保存到数据库的时候,默认为UTC时间,在数据库保存时,会和当前时间有个间隔,差距为8小时. 在读取的时候,需要再次转换回来,比较麻烦. 其实,Mongo本身就已经提供了相应的处理方法,即 ...
- CodeForces 484A Bits
意甲冠军: 10000询价 每次查询输入L和R(10^18) 在区间的二进制输出指示1大多数数字 1个数同样输出最小的 思路: YY一下 认为后几位全是1的时候能保证1的个数多 那么怎样构造 ...
- 【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布
内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做 ...
- 由<a href = "#" > 引发的思考
原文:由<a href = "#" > 引发的思考 前阵子在一个移动项目中,通过 <a href = "#" > 的方式 绑定clic ...
- newlisp 接受jenkins带空格的参数
jenkins有一个参数text种类,它能够以文本的段落拷贝作为参数 newlispThe program receives parameters are separated by spaces, 更 ...
- csdn仍是"待定"对?
正如标题,我的博客会审查,?我们见证.如此反复.考虑到该博客平台的变化. 看来,这次最终逃脱被"待审核",看来再也不用受这个困扰了,希望以后CSDN可以在 ...
- HTML5 3D翻书效果(双面效应)
最后使用HTML5翻书效果达到测试,比较简单,它的升级版是 最后一个问题: 1)后,原来的页面连环画将成为一面镜子 2)无法实现双面翻书. 3)明显感觉页面似有近遮挡标志. 这次的升级版本号实现过程比 ...
- Android docs4.3API
查找在线课程,加速进入Android docs API,最主要的原因是网上加载js文件速度慢,另一种是装google字体缓慢! import java.io.BufferedReader; impor ...
- ASP.NET程序读取二代身份证(附源码)
原文:ASP.NET程序读取二代身份证(附源码) 一般来说winform应用程序解决这个问题起来时很容易的,web应用程序就麻烦一点了. 这里我说说我的解决思路: 一.你必要有联机型居民身份证阅读器一 ...