温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hibernate继承映射所包含三种不同的策略的介绍

发布时间:2021-09-13 10:08:36 来源:亿速云 阅读:154 作者:chen 栏目:编程语言

这篇文章主要讲解了“Hibernate继承映射所包含三种不同的策略的介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate继承映射所包含三种不同的策略的介绍”吧!

Hibernate继承映射包含了三种不同的策略:

每簇类使用一个表;

每个子类一个表;

每个具体内一个表(有限制)。

假设我们有四个类Animal,Dog,Cat,文件名:Animal.java,

其代码如下:

程序代码:

class Animal {      private String identifier;      private String name;      private String category;      // setter and getter  }

文件名:Dog.java

class Dog extends Animal {      private String       // setter and getter  }

文件名:Cat.java

class Cat extends Animal {      private String       // setter and getter  }

每簇类使用一个表,使用每簇类使用一个表的策略时,有一个限制就时子类不能有NOT NULL,映射文件为文件名:Animal.hbm.xml

程序代码:

<class name="Animal" table="TB_ANIMAL">            <ID NAME=< SPAN>"identifier" type="string" column="IDENTIFIER">               <GENERATOR < SPAN>class="uuid.hex"/>                       <DISCRIMINATOR COLUMN=< SPAN>"ANIMAL_TYPE" type="string"/>            <PROPERTY NAME=< SPAN>"name" column="NAME" type="string"/>                      <SUBCLASS NAME=< SPAN>"Dog" discriminator-value="DOG">                                   <SUBCLASS NAME=< SPAN>"Cat" discriminator-value="CAT">                                class>

每个子类一个表,使用每个子类一个表的策略时,可以使用一个映射文件实现,也可以分成多个映射文件来实现。每个子类一个映射文件的情况:
文件名:Animal.hbm.xml

程序代码:

<class name="Animal" table="ANIMAL">            <ID NAME=< SPAN>"identifier" column="IDENTIFIER" type="string">               <GENERATOR < SPAN>class="uuid.hex"/>                               class>

文件名:Dog.hbm.xml

程序代码:

<JOINED-SUBCLASS NAME=< SPAN>"Dog" table="DOG" extends="Animal">            <KEY COLUMN=< SPAN>"DOG_ID"/>


文件名:Cat.hbm.xml


程序代码:

<JOINED-SUBCLASS NAME=< SPAN>"Cat" table="CAT" extends="Cat">            <KEY COLUMN=< SPAN>"CAT_ID"/>

每个子类一个表的策略实际上一种one-to-one的映射。

每个具体内一个表(有限制),使用每个具体内一个表(有限制)策略时,每一个子类的映射文件将要包含所有父类中的属性,映射文件文件名:Dog.hbm.xml

程序代码:

<class name="Dog" table="DOG">            <ID NAME=< SPAN>"identifier" column="IDENTIFIER" type="string">               <GENERATOR < SPAN>class="uuid.hex"/>                       <PROPERTY NAME=< SPAN>"name" column="NAME" type="string"/>                     class>

文件名:Cat.hbm.xml

程序代码:

<class name="Cat" table="CAT">       <ID NAME=< SPAN>"identifier" column="IDENTIFIER" type="string">          <GENERATOR < SPAN>class="uuid.hex"/>             <PROPERTY NAME=< SPAN>"name" column="NAME" type="string"/>             class>

感谢各位的阅读,以上就是“Hibernate继承映射所包含三种不同的策略的介绍”的内容了,经过本文的学习后,相信大家对Hibernate继承映射所包含三种不同的策略的介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI