我的日常

登录/注册
您现在的位置:论坛 资料库 JAVA开发 > hibernate 继承关系
总共48086条微博

动态微博

查看: 1777|回复: 0

hibernate 继承关系

[复制链接]

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

跳转到指定楼层
楼主
发表于 2014-05-26 20:48:57 |只看该作者 |倒序浏览
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
    姓 |名  


科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表