`
dingtao
  • 浏览: 56239 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ORM的树映射实现

阅读更多

我的考虑是用一个level字段代替lft和rgt字段,level字段维护着Category实例的层级关系。
例如,将root的level定义为1(这个在数据库或程序中可配),那么Child 1的level就为1|${id}(其中'|'为Level分层标记,${id}表示当前数据Id或其它可唯一标识的字段值),假定为1|2,同理Child 1.1的level就是1|2|3。
类结构如下所示:使用的是annotation的hibernate

Java代码 复制代码
  1. @Entity  
  2. public class Category implements Serializable {   
  3.   
  4.     /** Level分层标记 */  
  5.     public static final String LEVEL_SPLIT = "|";   
  6.   
  7.     @Id  
  8.     @GeneratedValue  
  9.     private Integer id;   
  10.        
  11.     /** 名称 */  
  12.     private String name;   
  13.   
  14.     /** level */  
  15.     private String level;   
  16.        
  17.     /** 删除标记 */  
  18.     private Boolean delFlag;   
  19.   
  20.     /** 下级的类别 */  
  21.     @OneToMany(fetch = FetchType.LAZY, mappedBy="parent")   
  22.     @OrderBy("id")   
  23.     private List<Category> children = new ArrayList<Category>();   
  24.   
  25.     /** 上级的类别 */  
  26.     @ManyToOne  
  27.     @JoinColumn(name = "category_id")   
  28.     private Category parent;   
  29.        
  30.     // 省略所有 getter/setter 方法...   
  31. }  


维护后数据库中的数据如下: 



查找某个特定类型及其子类,只需要获得当前类型的level值,然后查找 (level like 'xxxx%')即可。如下所示:
Rails中需要重写Category中类似find的方法。

分享到:
评论

相关推荐

    Hibernate框架ORM的实现原理

    ### Hibernate框架ORM的实现原理详解 #### 一、ORM概念及意义 **ORM**,即**对象关系映射**(Object Relational Mapping),是一种程序技术,用于将关系型数据库中的数据映射到对象上,以便于程序员能够以面向对象的...

    14 继承(一)(整个继承树映射到一张表)

    标题“14 继承(一)(整个继承树映射到一张表)”揭示了我们今天将探讨的主题——如何在数据库中通过ORM(对象关系映射)工具如Hibernate处理类的继承关系。 在Hibernate中,当一个类继承体系映射到数据库时,有几种...

    Hibernate映射树形结构

    在给定的压缩包`hibernate_2300_tree`中,可能包含了示例代码、配置文件或者教程资源,用于展示如何在实际项目中实现Hibernate对树形结构的映射。通过学习这些材料,开发者可以更深入地理解Hibernate映射树形结构的...

    树形菜单的实现,有增删改查方法的实现。

    本项目主要实现了基于Java的树形菜单,并集成了完整的增删改查功能,使得开发者可以快速地构建具有此类功能的系统。 首先,我们来详细探讨树形菜单的实现。树形菜单通常由节点(Node)组成,每个节点可以有零个或多...

    c#实现如何树形管理权限

    同时,为了动态构建和更新树,我们需要一个数据访问层来从数据库中获取权限信息,这可能涉及到ORM(对象关系映射)技术,如Entity Framework或NHibernate。 描述中提到的“附源码、数据库”,意味着这个解决方案...

    dotnet-FreeSql是一个功能强大的NETStandard库用于对象关系映射程序ORM

    FreeSql是一个针对.NETStandard平台的高效、轻量级的对象关系映射(ORM)框架,它为.NET开发者提供了方便快捷的数据操作方式。ORM框架的核心目标是将面向对象的编程模型与数据库的关系模型进行桥梁式连接,使得开发...

    org.springframework.orm.hibernate3.LocalSessionFactoryBean

    2. **Hibernate**:一个开放源码的对象关系映射框架,允许开发者将Java对象映射到数据库表中。它简化了持久化层的开发工作,使开发者能够更专注于业务逻辑的编写。 3. **LocalSessionFactoryBean**:Spring框架中的...

    继承映射的

    在软件开发领域,尤其是使用ORM(对象关系映射)技术进行数据库操作时,“继承映射”是一个关键的概念。它允许在数据库中表示面向对象编程中的继承关系,即一个子类可以继承父类的所有属性和方法。这种映射方式极大...

    Struts实现动态树

    综上所述,"Struts2实现动态树结合Hibernate"涉及到的主要知识点有:Struts2 MVC框架的工作原理、Hibernate的实体映射和CRUD操作、前端动态加载的实现、Ajax技术以及Struts2的配置和Action设计。通过整合这些技术,...

    jpa单表递归树形结构实现

    `JPA(Java Persistence API)`是Java EE平台中的一个标准,用于管理关系数据库的对象关系映射(ORM)。在本示例中,我们将探讨如何使用Spring JPA来实现单表递归树形结构。 首先,我们需要理解递归树形结构。在...

    Hibernate继承映射的第一种策略:每棵类继承树对应一张表

    在Java世界中,ORM(对象关系映射)框架如Hibernate极大地简化了数据库操作。Hibernate继承映射是将Java类的继承关系映射到数据库表的一种策略,使得对象模型的复杂性能够平滑地转化为关系数据库模型。本篇将详细...

    自动生成映射文件

    在实际开发中,这些映射文件常用于ORM(Object-Relational Mapping)框架,如Hibernate或MyBatis,它们能够将数据库的表结构映射为Java对象,实现数据库操作的自动化,提高开发效率。通过MyEclipse自动生成映射文件...

    使用SSH框架实现的树形结构

    Hibernate是对象关系映射(Object-Relational Mapping, ORM)框架,它简化了数据库操作。在树形结构中,数据通常以层级关系存在,如用户、角色和功能之间的多对多关系。Hibernate可以通过HQL(Hibernate Query ...

    struts2 hibernate 实现无限级联 树形分类

    总结起来,这个项目通过Struts2和Hibernate框架,实现了对无限级联分类的增删改查操作,其中涉及到数据库设计、ORM映射、MVC架构的运用以及递归算法在视图层的实现。这种无限级联树形分类结构在许多实际应用场景中都...

    orm-fetch-dsl:使用 ORM 查询急切获取列的 DSL

    大多数 ORM 实现都使用部分对象 - 同一个对象可以在多个查询中重复使用,但它是部分获取的 - 每个查询指定要获取的对象的哪些字段(映射到表中的列)。 访问任何未明确预取的字段将导致 ORM 从数据库中延迟加载它。...

    spring+struts2+hibernate+json+dtree+mysql实现的无限级联树(全)

    3. **Hibernate ORM**:Hibernate是一个对象关系映射工具,它允许开发者使用Java对象来操作数据库。在本项目中,Hibernate可能被用来处理与MySQL数据库的交互,包括无限级联树结构的数据存储和查询。 4. **JSON...

    Telerik OpenAccess ORM 2011 Q3 V2011.3.1116 源代码

    压缩包中的"Telerik_OpenAccess_ORM_2011_3_1116_source"文件应该包含了这个版本的全部源代码,开发者可以通过研究源码来学习其内部实现原理,或者定制自己的ORM解决方案。 总之,Telerik OpenAccess ORM 是一个...

    java+Struts+Hibernate实现的无限级树菜单

    Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。在无限级树菜单中,Hibernate用于持久化树节点的数据,通过HQL(Hibernate Query Language)进行查询,建立Java对象和数据库表之间...

    s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单.rar

    Hibernate作为ORM(对象关系映射)工具,简化了数据库操作,使得开发者可以直接通过Java对象进行数据操作。 接下来是“freemarker”,这是一个模板引擎,用于生成动态HTML、XML或其他文本格式的输出。在本项目中,...

Global site tag (gtag.js) - Google Analytics