该用户从未签到
|
hibernate 继承关系
1、所有的继承关系树生成一张表
添加鉴别器
鉴别器必须放在id下边
<discriminator column="type" type="string"/>
column="type" type鉴别器名字
type鉴别器类型
<!--
java类型---hibernate---关系数据库类型
java.lang.String--- string ----varchar
int--Integer ---integer----integer
-->
设置鉴别器值
discriminator-value="B"设置鉴别器值
<subclass name="com.tarena.entity.Book" discriminator-value="B">
<property name="isbn" />
</subclass>
hibernate 继承关系
2、每个实体都生成一张表(joined-subclass)
<joined-subclass name="com.tarena.entity.Book" table="t_book"
extends="com.tarena.entity.Product">
<key column="book_id" />
<property name="isbn" />
</joined-subclass>
1、所有实体只成一张表
2、每个实体都生成一张表
缺陷点:
第一中方式:
缺点:
(a)有冗余数据
(b)如果冗余字段不允许为空,数据插入就不成功
优点:
查询方便
第二中方式:
缺点:
(a)查询效率低
优点:
(a)不产生冗余字段
hibernate 继承关系
3、父类不在生成表,每个子类都成表(union-subclass)
<!--设置父类是abstract="true"就不在生成父类表-->
<class name="Product" abstract="true">
<id name="productId" column="product_id">
<!-- 不能使用自增,必须手工添加 -->
<generator class="assigned" />
</id>
<property name="productName" column="product_name" />
</class>
<union-subclass name="Book" extends="Product" table="t_book">
<property name="isbn" />
</union-subclass>
1、所有实体只成一张表
2、每个实体都生成一张表
3、父类不在生成表,每个子类都成表
缺陷点:
第一中方式:
缺点:
(a)有冗余数据
(b)如果冗余字段不允许为空,数据插入就不成功
优点:
查询方便
第二中方式:
缺点:
(a)查询效率低
优点:
(a)不产生冗余字段
第三中方式:
缺点:
(a)主键Id不能自动增长
优点:
(a)不产生冗余字段
(b) 查询效率高
姓名 性别
t_name t_sex
姓 |名
|
|