实体类
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_2300_tree`中,可能包含了示例代码、配置文件或者教程资源,用于展示如何在实际项目中实现Hibernate对树形结构的映射。通过学习这些材料,开发者可以更深入地理解Hibernate映射树形结构的...
树形菜单是一种常见的用户界面元素,它以层级结构展示数据,例如网站导航、文件系统或者组织架构。在Web应用中,用户可以通过点击展开或折叠节点来浏览层次化的信息。 实现“Struts+Hibernate树形菜单”的主要步骤...
在这个"struts2 hibernate 实现无限级联 树形分类"项目中,主要目标是创建一个能够展示无限级联的树形分类结构。这种结构通常用于组织层次化的数据,如产品类别、部门结构或者权限角色等。无限级联意味着这个树可以...
该项目展示了如何利用Struts处理用户请求,Hibernate管理数据,以及DWR实现前后端的实时交互,以构建一个具有无限级树形菜单的动态Web应用。这种组合提供了良好的分层架构,便于代码维护和扩展,同时提供了优秀的...
`hibernate_training_tree`示例展示了如何使用Hibernate处理树形数据结构。这在构建如组织架构、分类树等场景时非常实用。Hibernate提供了`<node>`和`<graph>`元素来表示树节点。 通过这些实例,学习者将能深入理解...
在IT行业中,构建一个无限级树形菜单是常见的需求,特别是在Web应用中,用于组织和展示层次结构的数据。本项目“s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单”就是这样一个解决方案,它整合了多种技术来...
在给定的标题和描述中,我们看到提到了多个JavaScript实现的树形菜单控件,如dtree、无限级树状菜单、struts+h ibernate树形菜单、treeview、xmltree以及dhtmltree等。接下来,我们将深入探讨这些控件及其在实际应用...
6. **文档`Struts+hibernate树形菜单.doc`**: 这个文档很可能包含了项目的详细步骤、配置说明、代码示例和使用指南。通过阅读这份文档,可以更深入地理解项目的实现过程和具体细节。 7. **资源文件`Tree`**: ...
5. **dTree插件**:dTree是一款基于JavaScript的可折叠树形菜单组件,用于在网页上显示层次结构的数据。在本项目中,前端可能利用dTree来展示从服务器获取的JSON数据,实现动态的、可交互的无限级联树视图。 6. **...
EasyUI是一个基于jQuery的UI组件库,专为开发人员提供丰富的Web前端控件,如表格、树形结构、对话框、表单等。它使得开发人员可以快速构建具有专业外观的用户界面,而无需深入了解HTML、CSS和JavaScript的底层细节。...
结果集可以以表格或树状结构展示,方便查看和分析。 6. **生成DAO和Service层代码**: - 插件可以根据实体类自动生成Data Access Object (DAO)接口和其实现,以及Service层接口和实现,遵循常见的设计模式,减少...
【标题】"用ajax,prototype,div,css,hibernate实现的动态树"是一个集成多种技术的项目,旨在创建一个交互式的、实时更新的树形结构,这在Web应用程序中常常用于展示层次结构的数据。这个项目的核心在于利用了AJAX...
它提供了丰富的组件,如表格、树形控件、下拉菜单等,大大简化了页面布局和交互设计的工作。 在"SpringMVC+Hibernate +MySql+ EasyUI实现CRUD"的项目中,开发流程大致如下: 1. **数据库设计**:首先,你需要使用...
树形菜单是一种数据可视化工具,它以层级结构展示信息,类似于自然界中的树状结构。每个节点代表一个项目,可以包含子节点,表示该项目下的子分类或子任务。在编程中,树形菜单通常用于文件系统、组织架构、网站导航...
在这个特定的例子中,我们关注的是如何在Hibernate中实现自连接查询,以处理Oracle数据库中EMP表的树状结构问题。 首先,自连接查询是指一个表与自身进行连接的操作,常用于处理具有层级关系的数据,例如员工的上...
标题"SSH+Easyui之TreeGrid树形展现数据"表明我们要讨论的是如何在SSH框架下利用EasyUI的TreeGrid组件来展示层次结构的数据。TreeGrid是一种结合了表格和树形结构的组件,它可以在同一视图中展示数据的层级关系,这...
在Java编程语言中,树形菜单是一种常见的用户界面元素,用于组织和展示具有层次关系的数据。在本场景中,我们讨论的是如何利用Hibernate框架来构建一个基于数据库的树形结构菜单。Hibernate是一个强大的对象关系映射...
在Web开发中,树形结构是一种常见的数据展示方式,尤其在管理后台、文件系统等场景下,用于展示层级关系的数据。本教程将详细介绍如何在MyEclipse7.0环境下,结合jQuery和Hibernate,构建一个自关联的树形结构。首先...
在本项目实例中,Extjs负责前端展示,如表格、窗体、树形结构等,与后端Spring MVC通过Ajax进行通信,实现数据的动态加载和更新。 **项目实例的运行环境** 要成功运行此项目,你需要准备以下环境: 1. **JDK**:...
在IT领域,树形菜单是一种常见的用户界面元素,它用于以层次结构展示数据,使得用户可以轻松地导航和操作复杂的目录或数据结构。本资源"jstree+JS树形菜单合集"聚焦于JavaScript实现的树形菜单,涵盖了多种应用场景...