您的位置:首页 > 其它

Hibernate的继承映射

2015-10-29 13:23 369 查看
一、创建Java工程,新建Lib文件夹,加入Hibernate和数据库(如MySql、Oracle、SqlServer等)的Jar包,创建 hibernate.cfg.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="com.mcs.hibernate.entities.union.subclass">
<class name="Person" table="PERSONS">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="hilo" />
</id>

<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="age" type="int">
<column name="AGE" />
</property>

<union-subclass name="Student" table="STUDENTS">
<property name="school" column="SCHOOL" type="string"></property>
</union-subclass>

</class>
</hibernate-mapping>


View Code
3、备注:

  1、采用 union-subclass 元素可以实现将每一个实体对象映射到一个独立的表中;

  2、子类增加的属性可以有非空约束,子类实例的数据仅保存在子类表中;

  3、使用 union-subclass 映射策略,既不需要使用鉴别者列,也无须使用 key 元素来映射共有主键;

  4、使用 union-subclass 映射策略是不可使用 identity 的主键生成策略;

  5、插入操作:对于子类对象只需把记录插入到一张数据表中;

  6、查询操作:查询父类记录,需把父表和子表记录汇总到一起再做查询,性能稍差。查询子类记录, 也只需要查询一张数据表;

4、优缺点:

  优点:
    1. 无需使用辨别者列.
    2. 子类独有的字段能添加非空约束.
  缺点:
    1. 存在冗余的字段
    2. 若更新父表的字段, 则更新的效率较低

建议使用 joined-subclass 进行映射或者使用 union-subclass 进行映射
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: