`
eagle0824
  • 浏览: 232409 次
  • 性别: Icon_minigender_1
  • 来自: 镇江
社区版块
存档分类
最新评论

hibernate 树状展示

阅读更多
实体类


package com.eagle.hibernate.model;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

@Entity
public class Company {
	private int id;
	private String name;
	private Set<Company> children = new HashSet<Company>();
	private Company parent;
	
	@Id
	@GeneratedValue
	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;
	}
	
	
	@OneToMany(cascade=CascadeType.ALL, mappedBy="parent",fetch=FetchType.EAGER)
	public Set<Company> getChildren() {
		return children;
	}
	public void setChildren(Set<Company> children) {
		this.children = children;
	}
	
	@ManyToOne
	@JoinColumn(name="parentId")
	public Company getParent() {
		return parent;
	}
	public void setParent(Company parent) {
		this.parent = parent;
	}
	
	
}




测试类
package com.eagle.hibernate.model;

import java.util.Date;
import java.util.Set;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;


public class HibernateCoreAPI {
private static SessionFactory sf;
	
	@BeforeClass
	public static void buildSession(){

		try {
			new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
			sf = new AnnotationConfiguration().configure().buildSessionFactory();
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	@AfterClass
	public static void closeSession(){
		sf.close();
	}
	@Test
	public void testSchemaExport(){
		new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
		
	}
	@Test
	public void testSaveCompany(){
		Company company = new Company();
		company.setName("总公司");
		Company company1 = new Company();
		company1.setName("子公司1");
		Company company2 = new Company();
		company2.setName("子公司2");
		
		Company company3 = new Company();
		company3.setName("子公司3");
		
		Company company4 = new Company();
		company4.setName("子子公司2_1");
		Company company5 = new Company();
		company5.setName("子子公司2_2");
		Company company6 = new Company();
		company6.setName("子子公司2_3");
		Company company7 = new Company();
		company7.setName("子子公司3_1");
		
		company.getChildren().add(company1);
		company.getChildren().add(company2);
		company.getChildren().add(company3);
		company1.setParent(company);
		company2.setParent(company);
		company3.setParent(company);
		
		company2.getChildren().add(company4);
		company2.getChildren().add(company5);
		company2.getChildren().add(company6);
		company4.setParent(company2);
		company5.setParent(company2);
		company6.setParent(company2);
		
		company3.getChildren().add(company7);
		company7.setParent(company3);
	Session s = sf.getCurrentSession();
	s.beginTransaction();
	s.save(company);
	s.getTransaction().commit();
	
	
	}
	
	@Test
	public void testLoad(){
		 testSaveCompany();
		 Session s = sf.getCurrentSession();
		 s.beginTransaction();
		 Company c = (Company)s.get(Company.class, 1);
		 print(c,0);
		 s.getTransaction().commit();
	}

	private void print(Company c,int level) {
		String str = "";
		for(int i=0;i<level;i++){
			str += "----";
		}
		System.out.println(str + c.getName());
		for(Company company:c.getChildren()){
			print(company,level+1);
		}
		
	}
	
}

分享到:
评论

相关推荐

    Hibernate映射树形结构

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

    struts+hibernate树形菜单

    树形菜单是一种常见的用户界面元素,它以层级结构展示数据,例如网站导航、文件系统或者组织架构。在Web应用中,用户可以通过点击展开或折叠节点来浏览层次化的信息。 实现“Struts+Hibernate树形菜单”的主要步骤...

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

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

    struts hibernate dwr无限级树形菜单

    该项目展示了如何利用Struts处理用户请求,Hibernate管理数据,以及DWR实现前后端的实时交互,以构建一个具有无限级树形菜单的动态Web应用。这种组合提供了良好的分层架构,便于代码维护和扩展,同时提供了优秀的...

    Hibernate 经典例子全

    `hibernate_training_tree`示例展示了如何使用Hibernate处理树形数据结构。这在构建如组织架构、分类树等场景时非常实用。Hibernate提供了`&lt;node&gt;`和`&lt;graph&gt;`元素来表示树节点。 通过这些实例,学习者将能深入理解...

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

    在IT行业中,构建一个无限级树形菜单是常见的需求,特别是在Web应用中,用于组织和展示层次结构的数据。本项目“s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单”就是这样一个解决方案,它整合了多种技术来...

    javascript-tree控件集合 大部分JS树形菜单控件 精心收集

    在给定的标题和描述中,我们看到提到了多个JavaScript实现的树形菜单控件,如dtree、无限级树状菜单、struts+h ibernate树形菜单、treeview、xmltree以及dhtmltree等。接下来,我们将深入探讨这些控件及其在实际应用...

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

    6. **文档`Struts+hibernate树形菜单.doc`**: 这个文档很可能包含了项目的详细步骤、配置说明、代码示例和使用指南。通过阅读这份文档,可以更深入地理解项目的实现过程和具体细节。 7. **资源文件`Tree`**: ...

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

    5. **dTree插件**:dTree是一款基于JavaScript的可折叠树形菜单组件,用于在网页上显示层次结构的数据。在本项目中,前端可能利用dTree来展示从服务器获取的JSON数据,实现动态的、可交互的无限级联树视图。 6. **...

    springmvc+hibernate+easyui

    EasyUI是一个基于jQuery的UI组件库,专为开发人员提供丰富的Web前端控件,如表格、树形结构、对话框、表单等。它使得开发人员可以快速构建具有专业外观的用户界面,而无需深入了解HTML、CSS和JavaScript的底层细节。...

    Eclipse 3.7(Indigo)hibernate Tools

    结果集可以以表格或树状结构展示,方便查看和分析。 6. **生成DAO和Service层代码**: - 插件可以根据实体类自动生成Data Access Object (DAO)接口和其实现,以及Service层接口和实现,遵循常见的设计模式,减少...

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

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

    SpringMVC+Hibernate +MySql+ EasyUI实现CRUD

    它提供了丰富的组件,如表格、树形控件、下拉菜单等,大大简化了页面布局和交互设计的工作。 在"SpringMVC+Hibernate +MySql+ EasyUI实现CRUD"的项目中,开发流程大致如下: 1. **数据库设计**:首先,你需要使用...

    树形菜单以及日历插件

    树形菜单是一种数据可视化工具,它以层级结构展示信息,类似于自然界中的树状结构。每个节点代表一个项目,可以包含子节点,表示该项目下的子分类或子任务。在编程中,树形菜单通常用于文件系统、组织架构、网站导航...

    hibernate 自连接 emp例子

    在这个特定的例子中,我们关注的是如何在Hibernate中实现自连接查询,以处理Oracle数据库中EMP表的树状结构问题。 首先,自连接查询是指一个表与自身进行连接的操作,常用于处理具有层级关系的数据,例如员工的上...

    SSH+Easyui之TreeGrid树形展现数据

    标题"SSH+Easyui之TreeGrid树形展现数据"表明我们要讨论的是如何在SSH框架下利用EasyUI的TreeGrid组件来展示层次结构的数据。TreeGrid是一种结合了表格和树形结构的组件,它可以在同一视图中展示数据的层级关系,这...

    java的树形菜单。

    在Java编程语言中,树形菜单是一种常见的用户界面元素,用于组织和展示具有层次关系的数据。在本场景中,我们讨论的是如何利用Hibernate框架来构建一个基于数据库的树形结构菜单。Hibernate是一个强大的对象关系映射...

    jquery树(hibernate自关联)myeclipse7.0

    在Web开发中,树形结构是一种常见的数据展示方式,尤其在管理后台、文件系统等场景下,用于展示层级关系的数据。本教程将详细介绍如何在MyEclipse7.0环境下,结合jQuery和Hibernate,构建一个自关联的树形结构。首先...

    Spring+Hibernate+Extjs项目实例

    在本项目实例中,Extjs负责前端展示,如表格、窗体、树形结构等,与后端Spring MVC通过Ajax进行通信,实现数据的动态加载和更新。 **项目实例的运行环境** 要成功运行此项目,你需要准备以下环境: 1. **JDK**:...

    jstree+JS树形菜单合集

    在IT领域,树形菜单是一种常见的用户界面元素,它用于以层次结构展示数据,使得用户可以轻松地导航和操作复杂的目录或数据结构。本资源"jstree+JS树形菜单合集"聚焦于JavaScript实现的树形菜单,涵盖了多种应用场景...

Global site tag (gtag.js) - Google Analytics