`
Wind_ZhongGang
  • 浏览: 264729 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate 单表实现树结构

阅读更多

  来看看通过单表来实现一个树形结构的方式。这里假设有这样一个实体名叫儿子,一个儿子只能有一个父亲,而一个父亲可能有多个儿子,因为父亲本身也是他自身父亲的儿子,所以在这里他们的属性没有什么区别。

  一。Son

package com.aaxis.model;

/**
 * User: Zhong Gang
 */
public class Son {
    private Integer id;
    private Integer version;

    private String name;

    private Son dad;

    public Son() {
    }

    public Son(String name) {
        this.name = name;
    }

    public Son(String name, Son dad) {
        this.name = name;
        this.dad = dad;
    }
}

 

  二。hbm映射配置文件

 

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping default-access="field">

    <class name="com.aaxis.model.Son" table="son">
        <id name="id" column="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <version name="version" column="version" type="java.lang.Integer"/>
        <property name="name" column="name" type="java.lang.String" index="person_name"/>

        <many-to-one name="dad" column="dad_id" class="com.aaxis.model.Son"/>
    </class>

</hibernate-mapping>

 

  三。测试代码

 

 

package com.aaxis;

import com.aaxis.model.Son;
import junit.framework.TestCase;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 10/24/11
 * Time: 11:50 AM
 */
public class HibernateCoreTest extends TestCase {

    public void testSon() throws Exception {
        Son dad = new Son("dad");

        Son son1 = new Son("son1", dad);
        Son son2 = new Son("son2", dad);
        Son son3 = new Son("son3", dad);

        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        session.saveOrUpdate(dad);
        session.saveOrUpdate(son1);
        session.saveOrUpdate(son2);
        session.saveOrUpdate(son3);
        transaction.commit();
        session.close();
    }
}

 

  四。数据表结构及测试截图

 

  

 

  

 

  最后附上源码以供各位参考

  • 大小: 8.3 KB
  • 大小: 14.2 KB
0
0
分享到:
评论

相关推荐

    Hibernate映射树形结构

    这种方式可以快速地进行遍历、插入和删除操作,适合大规模树结构,但更新成本较高。 4. **路径枚举模型**: 每个节点存储其完整路径,如`/1/2/3`,查询效率高,但更新路径时会涉及多个节点的修改,适用于动态变化...

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

    在这个"struts2 hibernate 实现无限级联 树形分类"项目中,主要目标是创建一个能够展示无限级联的树形分类结构。这种结构通常用于组织层次化的数据,如产品类别、部门结构或者权限角色等。无限级联意味着这个树可以...

    hibernate自身关联一对多实例(树形结构)

    总结来说,"Hibernate自身关联一对多实例(树形结构)"涉及到Java对象与数据库表之间的映射,以及如何在代码中建立和管理这种关联。正确理解和应用这些知识,可以帮助开发者高效地处理层次型数据,提高开发效率。对于...

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

    在本项目中,Hibernate可能被用来处理与MySQL数据库的交互,包括无限级联树结构的数据存储和查询。 4. **JSON(JavaScript Object Notation)**:JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...

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

    3. **无限级树结构**: 无限级树菜单的核心在于递归地加载和展示层次结构。在Java中,可以使用自引用的实体类来表示树节点,每个节点包含ID、父节点ID、名称等属性。通过查询数据库获取到所有节点,然后根据父节点...

    用ajax,prototype,div,css,hibernate实现的动态树

    【标题】"用ajax,prototype,div,css,hibernate实现的动态树"是一个集成多种技术的项目,旨在创建一个交互式的、实时更新的树形结构,这在Web应用程序中常常用于展示层次结构的数据。这个项目的核心在于利用了AJAX...

    Hibernate框架ORM的实现原理

    - DOM(Document Object Model)则是一种基于树形结构的解析方式,适用于小型到中型文档。 - 使用Java自带的`DocumentBuilderFactory`、`DocumentBuilder`等类可以轻松读取和解析XML文件。 2. **Properties文件...

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

    总结来说,"使用SSH框架实现的树形结构"项目涵盖了Spring、Struts2和Hibernate的综合运用,以及树形结构的展现和多对多关系的处理。开发过程中,需要熟练掌握各个框架的核心概念和技术,同时理解数据库设计和前端...

    hibernate实现递归查询

    本文将深入探讨如何使用Hibernate实现递归查询,以解决在数据层次结构中涉及父节点与子节点关系时的问题。递归查询通常用于处理树形结构的数据,例如组织结构、菜单系统或者文件目录等。 首先,我们需要了解递归的...

    struts hibernate dwr无限级树形菜单

    这个“struts hibernate dwr无限级树形菜单”项目是将这些技术结合在一起,以实现一个动态、可扩展的菜单系统。 Struts 是一个MVC(Model-View-Controller)框架,它提供了结构化的控制层来处理用户请求,管理业务...

    数据库存储树结构ClosureTableCateogryStore-master.zip

    - 实现树结构的API,如`addNode`, `removeNode`, `getAncestors`, `getDescendants`等方法,它们内部调用数据库操作。 5. **性能优化**: - 由于Closure Table需要大量插入和查询,所以对`closure_table`进行索引...

    SpringMVC+Hibernate +MySql+ EasyUI实现CRUD

    与Hibernate结合使用时,Hibernate能够自动创建和执行SQL语句,实现对象和数据库表之间的映射。 **EasyUI** 是一套基于jQuery的UI库,主要用于快速构建美观、响应式的Web前端界面。它提供了丰富的组件,如表格、树...

    Struts+Hibernate+Javascript 实现人无限级分类树形菜单

    Struts+Hibernate+Javascript 实现人无限级分类树形菜单,从MSSQL读出数据,支持N级,有多少级你就可以添多少级,示例图如上。主要是用到了Struts+Hibernate+JSTL1.1和自定义标签,树形菜单节点用 JavaScript控制...

    hibernate相关插件全集

    这个扩展包可能包括了如Hibernate Search(用于实现全文搜索)、Hibernate Criteria Enhancer(增强Criteria查询功能)、Hibernate Tree(支持树形结构的数据模型)等组件。这些扩展使得Hibernate在应对特定需求时...

    Hibernate 经典例子全

    Hibernate支持单继承和多层继承的映射,通过`&lt;subclass&gt;`或`&lt;joined-subclass&gt;`标签将子类映射到数据库中的特定表,这在设计复杂的对象模型时非常有用。 **四、一对一关系映射** 在`hibernate_one2one_ufk_1`示例...

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

    本篇将详细介绍Hibernate继承映射的第一种策略——每棵类继承树对应一张表,即单一表继承策略。 ### 单一表继承策略 在单一表继承策略中,所有类层次结构中的实例都存储在同一张数据库表中。这种策略通过在表中...

    hibernate中文帮助文档

    Hibernate还提供了一些自定义注解,如`@GeneratedValue`用于设置主键生成策略,`@Formula`用于在属性中使用SQL表达式,`@Cache`用于配置缓存,`@Filter`用于动态过滤数据,以及`@Parent`用于表示树形结构。...

    struts+hibernate树形菜单

    当我们需要在Web应用中实现树形菜单时,通常会结合这两个框架来完成。 树形菜单是一种常见的用户界面元素,它以层级结构展示数据,例如网站导航、文件系统或者组织架构。在Web应用中,用户可以通过点击展开或折叠...

    电子书-Hibernate 3.12

    通过Hibernate,Java对象可以直接映射到数据库表,对象的属性对应于表的列,对象实例则对应于表中的行。这样,开发者可以专注于业务逻辑,而不是数据库交互的细节。 在Hibernate 3.12中,配置变得更加灵活和简单。...

Global site tag (gtag.js) - Google Analytics