场景有个User类,然后扩展出了Student类和Teacher类,也就是Student类和Teacher类继承了User类
-
数据库是这样设计的,给每个子类造了一个表,下面是Hibernate项目配置,只配User
<class name="User"abstract="true">
<id name="id" column="USER_ID" type="long">
<generator class="native"></generator>
</id>
<property name="name" column="USER_NAME" type="string"></property>
<union-subclass name="Teacher" table="TEACHER">
<property name="job" column="TEACHER_JOB"/>
</union-subclass>
<union-subclass name="Student" table="STUDENT">
<property name="class" column="STUDENT_CLASS"/>
</union-subclass>
</class>
用法就是存储查询Teacher、Student都可以;如果查全的也行User,数据库发的是union语句
-
尼玛整个各种子类和他们的父类都在一张表,同时搞个字段区分是哪个类。配置文件这么写:
<class name="User"table="USERS">
<id name="id" column="USER_ID" type="long">
<generator class="native"></generator>
</id>
<discrimnator column="DISCRIMNATOR" type="String"></discrimnator>
<property name="name" column="USER_NAME" type="string"></property>
<subclass name="Teacher" discrimnator-value="TEACHER">
<property name="job" column="TEACHER_JOB"/>
</subclass>
<subclass name="Student" discrimnator-value="STUDENT">
<property name="class" column="STUDENT_CLASS"/>
</subclass>
</class>
父类如果不是抽象类,也可以在<class>表情内部搞个discrimnator-value="某某",这样父类子类任意搞
-
父类对应一张表,每子类再各自对应一张表,子类表的主键也是外键,就是说子类id=2,和父类里面有个id=2的组合用,多了个key配。配置文件这么写的:
<class name="User"table="USERS">
<id name="id" column="USER_ID" type="long">
<generator class="native"></generator>
</id>
<property name="name" column="USER_NAME" type="string"></property>
<joined-subclass name="Teacher" table="TEACHER">
<key column="TEACHER_ID"/>
<property name="job" column="TEACHER_JOB"/>
</joined-subclass>
<joined-subclass name="Student" table="STUDENT">
<key column="STUDENT_ID"/>
<property name="class" column="STUDENT_CLASS"/>
</joined-subclass>
</class>
- 虽然原则上上述方法是不能混用的,但实际上使用外连接也是可以结合使用的,但是个人认为不太好,除非万不得已,最好不要使用,参考《Hibernate in action》208页。
区别嘛,都标红了,数据库的区别,可以看看标红的类对应表没,至于用哪种,你觉得用起来哪种舒服就那种。有时候都不搞继承,当字段区分搞了。
分享到:
相关推荐
用Hibernate映射继承关系
hibernate学习笔记 hibernate学习笔记 hibernate学习笔记 hibernate学习笔记 hibernate学习笔记 hibernate学习笔记 hibernate学习笔记 hibernate学习笔记
Hibernate学习笔记_特别详细 Hibernate学习笔记_特别详细
Hibernate学习笔记 Hibernate学习笔记 Hibernate学习笔记 Hibernate学习笔记
hibernate 对象关系映射总结hibernate 对象关系映射总结hibernate 对象关系映射总结
学习hibernate框架时,整理的笔记,对hibernate框架有全面的介绍
Hibernate学习笔记Hibernate学习笔记Hibernate学习笔记Hibernate学习笔记
hibernate配置关系的笔记
Hibernate映射解析 七种映射关系
hibernate实现继承关系映射的方式有三种,这种方式是将每个类都映射成一张表。
Hibernate案例与专题-继承映射策略。详细介绍了Hibernate继承映射策略。
hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要
达内HIBERNATE学习笔记,达内HIBERNATE学习笔记,达内HIBERNATE学习笔记,达内HIBERNATE学习笔记,
Hibernate继承映射+C3P0代码
Java相关课程系列笔记之十四Hibernate学习笔记
这套笔记是我学习Hibernate,进行相关技术点训练时记录下来的,其中包括技术点说明与相关事例,拿出来与大家分享。
hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置实体规则,核心API详解(Configuration,sessionFactory,session,Transaction),hibernate中的对象状态以及刷新能缓存机制 ...
Hibernate4中映射关系图解。