这篇文章主要讲解了“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继承映射所包含三种不同的策略的介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。