首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate征程(五)之继承映射和组件映射

2013-10-10 
Hibernate征途(五)之继承映射和组件映射之所以把这两种映射放到一起说,是因为二者都是以复用为目的,减少了

Hibernate征途(五)之继承映射和组件映射
    之所以把这两种映射放到一起说,是因为二者都是以复用为目的,减少了代码和配置量,这是相同点;二者之间的不同点类似继承和实现的区别:继承的类是一个事物的抽象,而实现的接口仅仅是功能的抽象。
继承映射

    如上面所说,以下面类图为例:

    Hibernate征程(五)之继承映射和组件映射

    它的映射方式有三种,它们的类和属性相同,只是映射文件不同,当然也导致映射的数据结构也不同,先一下以上三个类,再根据映射文件的不同说明每种映射方式。

    Animal


    很明显,这种方式是将Pig和Bird冗余到一张表,以类型字段区分开来,来看一下它的映射文件:


    再来看一下映射文件:


    再来看一下映射文件:

    Contact类在此的作用就是组件类,需要时引用即可。来看一下简写的类:

    Contact


    但从表结构上来看,和上面的“联合子类”的继承映射类似。再来看一下User的映射文件(Employee类似):

<hibernate-mapping><class name="com.tgb.hibernate.User" table="t_User"><id name="id"><generator class="native"/></id><property name="name"/><component  name="userContact"><property name="email"/><property name="address"/><property name="zipcode"/><property name="contactTel"/></component></class></hibernate-mapping>

    可以看到Contact此处仅仅是作为组件使用,它仅仅是一个值,而非实体,所以不用Contact的映射文件。它与继承类似,都是为了复用;相比继承映射而言,不同点在于它将功能抽象出来,它的粒度更细,提供了更广的复用范围,与接口类似。

总结

    到此为止大致给大家介绍了一下继承映射和组件映射,希望通过对比的方式,将二者的区别和类似展现出来,下篇博客会介绍一下复合主键映射和集合映射。

热点排行