- 浏览: 7154911 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (397)
- 架构研究 (44)
- 网络协议-TCP/HTTP (20)
- SPRING (23)
- HIBERNATE 3 (30)
- STRUTS 2 (20)
- Java/J2se (25)
- Servlet/Jsp (9)
- 开发工具IDE (10)
- WEB服务器 (17)
- 前端--Java Script (33)
- 前端--CSS (7)
- OS--Linux (31)
- OS--MAC OS (19)
- MySQL数据库 (19)
- Oracle数据库 (11)
- 项目管理工具 (12)
- 数据报表技术 (4)
- 图像处理技术 (10)
- 其它综合技术 (13)
- 权限管理 (1)
- MyBatis (1)
- 网络安全 (6)
- IO (21)
- PostgreSQL (2)
- Eclipse RCP (1)
- GWT (1)
- 算法 (3)
- Storm (2)
- zookeeper (3)
- 消息 (1)
最新评论
-
bukebuhao:
已解决,打开文件太多。ulimit -n 上次临时生效后再次s ...
TFS(Taobao File System)配置dataServer、分区、挂载数据盘 -
bukebuhao:
ds重启后启动不了。报错信息如下,请大神帮助[2018-08- ...
TFS(Taobao File System)配置dataServer、分区、挂载数据盘 -
墨上清:
感谢,看完有了一个完整的知识网络。
Spring MVC 教程,快速入门,深入分析 -
云卷云舒灬:
谢谢,学到很多
Spring MVC 教程,快速入门,深入分析 -
luozhy:
非常感谢非常感谢
Project Web Access ActiveX控件 安装
人类(Person) , 男人(Men)继承"人"类, 女人(Women)继承"人"类, UML如下:
映射到如下的t_person表中 , 有以下6个字段:
1 int id //主键
2 varchar name //父类中的姓名
3 int age //父类中的年龄
4 int/varchar type //区分"人","男人","女人" 的专用字段, 默认类型是varchar, 也可以指定为int类型. 叫鉴别器字段
//Person类:type值设为0, Men类: type值设为1, Women 类: type值设为2
5 varchar a //"男人"类专有属性
6 varchar b //"女人"类专有属性
Person, Men, Women 三个类这里就不显示了,但简单, 想看了附件中有源码
Person.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_test.extends_1" auto-import="false"> <class name="Person" table="t_person" discriminator-value="0"><!-- "鉴别值"为0 --> <!-- 父类的属性 --> <id name="id"> <generator class="native"/> </id> <!-- 重点:鉴别器 --> <!-- 指定type字段,做区分父子具体类型用 ,各类还要指定"鉴别值": discriminator-value="1"--> <discriminator column="type" type="int"/> <!-- 父类的属性 --> <property name="name"/> <!-- 父类的属性 --> <property name="age"/> <!-- Mem子类的映射 --> <subclass name="Men" discriminator-value="1"><!-- "鉴别值"为1 --> <!-- Men类专有的属性a --> <property name="a"/> </subclass> <!-- Women子类的映射 --> <subclass name="Women" discriminator-value="2"><!-- "鉴别值"为2 --> <!-- Women类专有的属性b --> <property name="b"/> </subclass> </class> </hibernate-mapping>
保存与查询操作:
package extends_test.extends_1; import org.hibernate.Session; import org.hibernate.Transaction; import dao.HibernateUtil; /** * 继承关系的映射(方法一) * * 总个继承树映射到一张表 * */ public class Test { /** * @param args */ public static void main(final String[] args) { //add(); query(); } /** * 查询测试 */ public static void query() { Session session = null; try { session = HibernateUtil.getSeesion(); final Person p = (Person) session.get(Person.class, 2); //ID为2的记录是 Men类型 System.out.println(p.getClass()); //get()第一个参数用了 Person.class //能识别出是class extends_test.extends_1.Men类型 } finally { if (session != null) { session.close(); } } } /** * 添加测试 */ public static void add() { final Person p1 = new Person(); p1.setName("我是Person类"); final Men m1 = new Men(); m1.setName("我是男人类"); m1.setA("a"); final Women w1 = new Women(); w1.setName("我是女人类"); w1.setB("b"); Session session = null; try { session = HibernateUtil.getSeesion(); final Transaction tx = session.beginTransaction(); session.save(p1); session.save(m1); session.save(w1); tx.commit(); //SQL如下 //Hibernate: insert into t_person (name, age, type) values (?, ?, 0) //Hibernate: insert into t_person (name, age, a, type) values (?, ?, ?, 1) //Hibernate: insert into t_person (name, age, b, type) values (?, ?, ?, 2) } finally { if (session != null) { session.close(); } } } }
评论
3 楼
grossofans
2010-11-15
jhp_sjyy 写道
数据库中是不是需要三张表啊 ?
hbm配置文件 就一个父类的吗?
hbm配置文件 就一个父类的吗?
应该是一张表吧!!!
2 楼
jhp_sjyy
2009-06-12
问题解决了
1 楼
jhp_sjyy
2009-06-12
数据库中是不是需要三张表啊 ?
hbm配置文件 就一个父类的吗?
hbm配置文件 就一个父类的吗?
发表评论
-
Hibernate二级缓存 ---- 最佳实践
2010-11-08 10:17 39219作者:赵磊 博客:ht ... -
Hibernate--泛型DAO
2010-06-27 19:49 4989泛型DAO(翻译) http://www.iteye.com ... -
Hibernate--空位
2010-06-27 15:41 1721原文章已合并整理到: http://elf8848.itey ... -
Hibernate二级缓存 ---- 入门示例
2010-06-27 15:34 4107一. 我们使用oscache来演示 , 引入oscache的j ... -
Hibernate 操作Blob Clob
2010-06-14 16:50 5174Photo.java import java.sql.Bl ... -
Hibernate ---- 控制日志
2010-06-06 11:46 2996Hibernate版本 3.3或3.4 Hibernate ... -
Hibernate悲观锁定与乐观锁定
2010-05-17 15:08 2165悲观锁定 由数据库方面实现. 可见:Hibernate悲观锁 ... -
Hibernate懒加载深入分析
2010-05-14 11:22 8227[size=small] ------------------ ... -
Hibernate批量操作(JDBC批量操作)
2009-03-30 14:52 8328部分内容转自 :http://ga ... -
Hibernate分页查询与泛型
2009-03-26 19:03 7310JE有两篇文章,关于分页查询 与泛型 的,写的很好.这里收藏一 ... -
20 Hibernate 1+N问题的原理与解决
2009-03-04 09:44 13021什么时候会遇到1+N的问题? 前提:Hibernate默认表 ... -
19 Criteria查询,DetachedCriteria离线查询 --做综合查询
2009-03-04 09:35 3677通过Session得到Criteria类的对象 /** ... -
空位空位
2009-03-03 10:22 2238空位空位空位空位 -
17 继承(四)每一个具体的类 映射到一张表
2009-03-02 13:54 2248类(Person) , 男人(Men)继 ... -
16 继承(三)(把前面14,15讲的情况结合起来)
2009-03-02 13:30 2046人类(Person) , 男人(Men)继承"人& ... -
15 继承(二)(每个子类扩展的属性单独保存在一张表中)
2009-03-02 13:07 2023人类(Person) , 男人(Men)继承" ... -
13 级联和关系维护(Cascade 和Inverse)
2009-03-01 17:58 2989Cascade用来说明当对主对象进行某操作时, 是否对其关联的 ... -
12 映射-- 集合类的映射(Set,List,Map,Array)
2009-03-01 16:18 2573部门类Department , 他有 empa1, emp ... -
11 映射-- 组件映射(人类与姓名类)
2009-03-01 15:26 2313User类: 注意他的name属性 package ... -
10 映射-- 多对多(老师与学生)
2009-03-01 15:01 2530学生类: package dao.po; impo ...
相关推荐
NULL 博文链接:https://elf8848.iteye.com/blog/341477
博文链接:https://shaqiang32.iteye.com/blog/201319
hibernate实现继承关系映射的方式有三种,这种方式是将每个类都映射成一张表。
NULL 博文链接:https://quicker.iteye.com/blog/658432
博文链接:https://shaqiang32.iteye.com/blog/201321
Hibernate的继承映射 --每个继承层次一张表 -- 每个具体类一张表 -- 每个类一张表
NULL 博文链接:https://quicker.iteye.com/blog/658411
这种映射方式只需为继承关系树的Employee根类创建一张表EMPLOYEES。如图14-4所示,在EMPLOYEES表中不仅提供和Employee类的属性对应的字段,还要提供和它的两个子类的所有属型对应的字段,此外,EMPLOYEES表中需要...
博文链接:https://shaqiang32.iteye.com/blog/201320
2.2.4. 映射继承关系 2.2.4.1. 每个类一张表 2.2.4.2. 每个类层次结构一张表 2.2.4.3. 连接的子类 2.2.4.4. 从父类继承的属性 2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一...
1) 数据库表:一张主表,两张子表,子表共用主表数据,即外键关系 实体层设计:一个父类,两个子类,子类继承父类, 配置文件:只配置父类的映射文件,在其中加入joined-subclass将两个子类实体映射关系添加 2)...
2.2.4. 映射继承关系 2.2.4.1. 每个类一张表 2.2.4.2. 每个类层次结构一张表 2.2.4.3. 连接的子类 2.2.4.4. 从父类继承的属性 2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-...