Hibernate继承关系映射
一个类继承体系一张表(subclass)(映射文件)
<class name=”Employee” table=”employee” discriminator-value=”0”>
<id name=”id”>
<generator class=”native”/>
</id>
<discriminator column=”type” type=”int”/>
<property name=”name”/>
<many-to-one name=”depart” column=”depart_id”/>
<subclass name=”Skiller” discriminator-value=”1”>
<property name=”skill”/>
<subclass name=”Sales” discriminator-value=”2”>
<property name=”sell”/>
</subclass>
</class>
每个子类一张表(joined-subclass)(映射文件)
<class name=”Employee” table=”employee”>
<id name=”id”>
<generator class=”native”/>
</id>
<property name=”name”/>
<joined-subclass name=”Skiller” table=”skiller”>
<key column=”employee_id”/>
<property name=”skill”/>
</joined-subclass>
<joined-subclass name=”Sales” table=”sales”>
<key column=”employee_id”/>
<property name=”sell”/>
</joined-subclass>
</class>
混合使用“一个类继承体系一张表”和“每个子类一张表”(映射文件)
<class name=”Employee” table=”employee”>
<id name=”id”>
<generator class=”native”/>
</id>
<discriminator column=”type”/>
<property name=”name”/>
<subclass name=”Skiller”>
<property name=”net”/>
</subclass>
<subclass name=”Sales”>
<join table=”sales”>
<key column=”employee_id”/>
<property name=”sell”/>
</join>
</subclass>
</class>
每个具体类一张表(union-subclass)(映射文件)
<class name=”Employee” abstract=”true”>
<id name=”id”>
<generator class=”hilo”/>
</id>
<property name=”name”/>
<union-subclass name=”Skiller” table=”skiller”>
<property name=”skill”/>
</union-subclass>
<union-subclass name=”Sales” table=”sales”>
<property name=”sell”/>
</union-subclass>
</class>
主键不能是identity类型,如果父类是abstract=“true”就不会有表与之对应。隐式多态,映射文件没有联系,限制比较多很少使用。
Cascade和inverse(Emplyee—Department)
Cascade用来说明当对助对象惊醒某种操作时是否对其关联的从对象也做类似的操作,常用的cascade;
None,all,save-update,delete,lock,refresh,evict,relicate,persist,merge,delete-orphan(one-to-many)。一般对many-to-one,many-to-many,不设置级联,在<one-to-one>和<one-to-many>中设置级联。
Inverse表“是否放弃维护关联关系”(在Java里两个对象产生关联时对数据库表的影响),在one-to-many和many-to-many的集合定义中实用,inverse=“true”表示该对象不维护关联关系;该属性得值一般在使用有序集合时设置成false(注意hibernate的缺省值是false)。
One-to-many维护关联关系就是更新外键。Many-to-many维护关联关系就是在中间表增减记录。
注:配置成one-to-one的对象不维护关联关系。
分享到:
相关推荐
标题:“Hibernate继承关系映射.pdf” 描述:“简明扼要地介绍了Hibernate中继承关系的映射方式,深入探讨了三种不同的映射策略及其优缺点,同时解析了多态查询的概念。” 知识点: ### Hibernate继承关系映射...
本主题将深入探讨"Hibernate继承映射+C3P0代码"的相关知识点。 首先,让我们理解Hibernate的继承映射。在Java中,我们可以创建一个基类,然后派生出多个子类,这种设计模式在数据库中也可以被映射出来。Hibernate...
映射文件应定义该类的属性与数据库表中的列之间的映射关系。例如,对于`HourlyEmployee`类,映射文件可能如下所示: ```xml ``` 类似的,`SalariedEmployee`类也有其对应的映射文件。 ##### 14.1.2 ...
Hibernate继承映射是将Java中的继承关系映射到数据库的关系模型中。在Java中,一个基类可以有多个子类,而在数据库中,这些子类可以共享一张表或者各自拥有独立的表,这取决于我们选择的继承策略。Hibernate提供了四...
### Hibernate的继承多态映射关系详解 在软件开发领域,特别是使用面向对象编程语言如Java进行开发时,我们经常需要处理复杂的类继承关系。在ORM(Object-Relational Mapping)框架如Hibernate中,如何优雅地将这些...
Hibernate继承映射是将Java类的继承关系映射到数据库表的一种策略,使得对象模型的复杂性能够平滑地转化为关系数据库模型。本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承...
总结起来,"每个类都对应一张表"的继承映射策略在Hibernate中是一种直接且易于理解的方法,适合那些每个类都有独特属性的情况。然而,它可能不适合所有场景,特别是当子类众多或者需要减少数据冗余时。在实际应用中...
Hibernate的继承映射 --每个继承层次一张表 -- 每个具体类一张表 -- 每个类一张表
《Hibernate继承映射详解》 在Java开发中,对象关系映射(ORM)框架如Hibernate大大简化了数据库操作。Hibernate不仅提供了对基本数据类型的映射,还支持复杂的数据结构,如继承关系的映射。本篇文章将深入探讨...
**标题:“Hibernate继承映射(Annotation)详解”** 在Java持久化框架Hibernate中,继承映射是一种关键特性,它允许开发者将对象模型的继承结构映射到数据库的表结构。在传统的面向对象编程中,继承是实现代码复用和...
针对hibernate的继承映射部分做了几个测试的例子,更加直观的阐述了继承映射的几种方式以及对应的表结构方式,文件被分割成3部分 http://download.csdn.net/source/259075 http://download.csdn.net/source/259072 ...
针对hibernate的继承映射部分做了几个测试的例子,更加直观的阐述了继承映射的几种方式以及对应的表结构方式,文件被分割成3部分 http://download.csdn.net/source/259075 http://download.csdn.net/source/259072 ...
总结来说,“每个子类一张表”的继承映射策略是Hibernate提供的一种处理继承关系的方法,它将类的继承结构映射到数据库的多个表中。这种策略适合于子类具有大量特有属性的情况,但需要权衡可能带来的数据库设计复杂...