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

Hibernate:结合模式解决树的映射

2013-10-08 
Hibernate:组合模式解决树的映射树经常用来展示目录结构,那么在Hibernate中怎样解决树的映射问题呢?先来看

Hibernate:组合模式解决树的映射

树经常用来展示目录结构,那么在Hibernate中怎样解决树的映射问题呢?


先来看一个分销商的树形结构的例子

所有分销商

东北区

辽宁省

沈阳医药

吉林省

华北区

北京市

北京医药

河北省

华南区

 

那么怎样用组合模式抽象这一模型呢?


先看下类图

Hibernate:结合模式解决树的映射

大家都知道树的存储可以有两种方式

双亲存储

每一个节点都存储它的直接父节点的地址

孩子存储

每个节点都存储它所有直接孩子节点的地址

 

但是在对象模型中,我们既想知道节点的父亲是谁又想获取它的所有孩子节点

那么类图可以修改如下

Hibernate:结合模式解决树的映射

上图中,为每个节点都添加了父节点引用,放在Node类中是为了复用

 

上java代码

 

抽象Node类
Client类

Region类
ClientLevel类


最关键的是HBM映射文件


HBM--ClientLevel

<hibernate-mapping package="com.tgb.hibernate"><class name="Node" abstract="true">    <id name="id">        <generator class="uuid"/>    </id>    <property name="name"/>    <many-to-one name="parent" column="pid"/>    <union-subclass name="Region" table="t_region">        <set name="children" inverse="true">            <key column="pid"/>            <one-to-many class="Node"/>        </set>    </union-subclass>     <union-subclass name="Client" table="t_client">        <many-to-one name="level"/>    </union-subclass> </class></hibernate-mapping>

这样就实现了树形结构的映射。


1楼zs15932616453昨天 23:21
不错的实例,值得收藏!

热点排行