数据库中的树形结构 - JAVA 设计 (通用)

5 篇文章 0 订阅

导读:

  我们通常会在应用中碰到树形结构的内容,比如 文件夹/文件模型, 部门组织结构,目录树等等,通常在设计模式中叫做 compose 模式。

  在数据库中常常这样表示: 我们以Catalog (分级目录) 为例子

  Catalog (分级目录)

  字段名称

  字段

  类型

  备注

  目录ID

  catalog_id

  varchar(36)

  pk, not null

  目录名称

  catalog_name

  varchar(50)

  not null

  父目录ID

  parent_id

  varchar(36)

  fk

  创建时间

  create_datetime

  datetime

  not null

  目录描述

  description

  varchar(200)

  

  我们考虑在数据库中一次将所有数据读入内存,然后在内存中生成一个Tree,这样可以减少数据库的访问,增加性能,并且只有的数据方式改变的时候,全部重新从数据库中生成Tree,否则一直保持在内存中。

  我们使用标准的DAO模式先生成 POJO类(Catalog)和DAO类(CatalogDAO)。

  然后我们建立相对通用的 Tree 和 TreeNode 类。

  Tree.java

  

  然后建立业务 Tree

  CatalogTree.java

  

  最后,我们只要使用以下的语句就可以了:

  1. CatalogTree.getInstance().getTreeNode(...)

  2. CatalogTree.getInstance().getCatalogNode(...)

  3. CatalogTree.getInstance().getRootNode()

  然后通过 TreeNode,就可以得到 parent, parents 和 children, allChildren



本文转自

http://hi.baidu.com/hdt511/blog/item/b6dcb61bb2c7861c8718bf0e.html

>>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值