`
wzw00001
  • 浏览: 92359 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

用hibernate设计树型结构

阅读更多
要求:
请设计一个树型结构,完成下列需求:
任意一个节点只能有一个(或0个)父节点
任意一个节点可以包含多个子节点
给定任意一个节点,可以输出这个节点的父节点,以及父节点的父节点,一直到顶级节点,要求输出的时候,从顶级节点开始一直输出到给定的节点为止
给定任意一个节点,可以输出这个节点下的所有子节点(包括子节点的子节点),需要用树型结构的方式递归输出

要求:给出实体类代码、hibernate映射文件代码以及测试代码
分享到:
评论
1 楼 fengyun228 2008-05-23  

给出一种 从当前节点开始一直输出到给定的顶级为止

实体类:

public class TreeTest {

private int id;

private TreeTest treeTestid;

private String name;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public TreeTest getTreeTestid() {
return treeTestid;
}

public void setTreeTestid(TreeTest treeTestid) {
this.treeTestid = treeTestid;
}


}


映射:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="TreeTest">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="treeTestid" column="pid"  cascade="all">
</many-to-one>
</class>
</hibernate-mapping>

测试:
import org.hibernate.Session;

import junit.framework.TestCase;

public class One2OneTest extends TestCase {

public void testSave1() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();

TreeTest tt = new TreeTest();

tt.setTreeTestid((TreeTest)session.load(TreeTest.class, 1));
tt.setName("王f");


session.save(tt);



session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}

public void testLoad() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();

TreeTest tt = (TreeTest)session.load(TreeTest.class, 4);

while(tt.getTreeTestid().getId() != 1) {
System.out.println(tt.getTreeTestid().getId());
System.out.println(tt.getTreeTestid().getName());
tt = tt.getTreeTestid();
}

session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
}

相关推荐

    Hibernate映射树形结构

    标题“Hibernate映射树形结构”指的是如何用Hibernate来存储和操作具有层级关系的数据。 1. **单表映射策略**: Hibernate可以使用单个表来存储树形结构,通过一个自增的`id`字段以及一个表示父节点的`parent_id`...

    ext+struts2+spring+hibernate 树型菜单

    "ext+Struts2+Spring+Hibernate 树型菜单"是一个典型的Java Web开发框架组合,用于创建具有树状结构的用户界面,通常用于数据的层级展示,比如部门结构、文件目录等。下面将详细解释这些技术和如何协同工作。 **...

    Hibernate 单表实现树结构

    标题中的“Hibernate 单表实现树结构”是指在Java开发中,使用Hibernate框架来处理具有层级关系的数据,例如组织架构、目录树等。在数据库中,这种数据通常使用单表自连接的方式存储,即一张表中某个字段指向自身,...

    hibernate父亲与孩子

    特别是对于树型结构,考虑使用查询缓存或元素级缓存,可以显著提升用户体验。 6. **性能优化**:处理树型结构时,注意避免N+1查询问题,这可能导致大量的数据库交互。通过批量加载或一次性加载子节点,可以减少...

    JSP与无限级分类树型菜单

    这里需要构建一个树形结构,通常用Map或者自定义的树节点类来存储。每个节点包含自身的属性(如ID、名称等)以及子节点列表。 4. 层级遍历:遍历树形结构,生成HTML结构。可以使用递归函数,每个节点生成一个li标签...

    志远信息管理系统 V2.0.rar

    1,栏目无限级分类,形成树型结构,可以随意增加,修改,移动,删除栏目,移动或删除栏目的同时系统自动移动或删除其对应子栏目和信息。 2,系统支持国际化,采用utf-8编码,资源文件里可以设置多国语言,形成多国语言...

    ext+spring+hibernat+struts 人力资源管理系统

    在系统设计时,通常会使用Hibernate的配置文件来定义数据表结构,使得数据库操作与业务逻辑分离,提高代码的可读性和可扩展性。 综合以上技术,这个人力资源管理系统具有以下特点: 1. 前端采用EXT,提供美观的用户...

    J_HI 平台 及 开发文档

    - **树型结构**:用于构建和操作树状数据结构的方法。 - **Java脚本工具**:提供一系列Java脚本编写工具。 - **常用工具类**:集合了一系列常用的工具类,如字符串处理、日期时间操作等。 7. **通用应用服务** ...

    xalan.jar,serializer.jar,jdom.jar

    它提供了一个基于树型结构的API,使得开发者可以更方便地创建、读取和修改XML文档。JDOM与标准的DOM API相比,更加轻量级,且专为Java设计,因此在性能和易用性上有所优化。 4. **DWR (Direct Web Remoting)**: ...

    DOM4J 解析XML 添加 删除 修改

    DOM是一种树型结构,将XML文档解析为一系列的节点,包括元素(Element)、属性(Attribute)、文本(Text)等。DOM4J提供了一种灵活且高性能的方式来处理这些节点。 1. 添加元素: 在DOM4J中,可以使用`Element`类...

    java源码包JSP实例源码JAVA开发源码65个合集.zip

    JSP树型菜单 DTree.zip jsp生产管理系统.rar jsp高校科研项目管理系统.rar msn聊天程序Java仿真代码.rar Notebook源码,Java记事本.rar P2P--多用户在线聊天室(Java源码).rar P2P源码 Azureus 2.5.0.2(JAVA).rar ...

    dom4j-1.6.1jar包

    DOM是一种树型结构,可以将整个XML文档加载到内存中,方便进行查询和修改。 2. **简单可扩展标记语言 (SAX)**:对于大型XML文档,DOM解析可能会消耗大量内存。因此,dom4j也支持SAX解析,它通过事件回调机制处理XML...

    javase相关知识点

    3. 树型表结构:通常需要id(主键)、parent_id(父节点id)字段,通过递归查询构建树形结构。 4. SQL查询:SELECT Sname, SUM(Ccredit) FROM Student JOIN SC ON Student.Sno = SC.Sno JOIN Course ON SC.Cno = ...

    ExtJs使用文档

    - **丰富的 UI 组件:** 提供了多种 UI 组件如表格、树型菜单、弹出对话框等。 - **跨浏览器兼容性:** 支持 Internet Explorer 6+、Firefox 1.5+、Safari 2+ 和 Opera 9+ 等主流浏览器。 - **与 jQuery、Prototype ...

    JAVA上百实例源码以及开源项目源代码

    得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于...

    java源码包---java 源码 大量 实例

    得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于...

    1000道互联网Java工程师面试题485页.pdf

    2. **Zookeeper文件系统**:ZooKeeper维护一个类似文件系统的数据结构,使用树型目录结构来组织数据。 3. **ZAB协议**:ZooKeeper Atomic Broadcast(原子广播)协议,是ZooKeeper数据一致性的核心算法。 4. **...

    java源码包2

    得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于...

    java源码包3

    得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于...

Global site tag (gtag.js) - Google Analytics