`

hibernate生成tree

阅读更多
package yingjun.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.ManyToOne;
import javax.persistence.OneToMany;


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

	
}

 

生成的建表语句:

 create table Tree (
        id integer not null auto_increment,
        name varchar(255),
        parent_id integer,
        primary key (id)
    )

    alter table Tree 
        add index FK27E7BE9FD80F87 (parent_id), 
        add constraint FK27E7BE9FD80F87 
        foreign key (parent_id) 
        references Tree (id)

 

向树中插入数据:

@Test
	public void TestSaveTree(){
		
		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		Tree tree1=new Tree();
		tree1.setName("图片");
		
		Tree tree2=new Tree();
		tree2.setName("照片");
		
		Tree tree3=new Tree();
		tree3.setName("海报");
		
		Tree tree4=new Tree();
		tree4.setName("我的照片1");
		
		Tree tree5=new Tree();
		tree5.setName("我的照片2");
		
		tree1.getChildren().add(tree2);
		tree1.getChildren().add(tree3);
		tree2.getChildren().add(tree4);
		tree2.getChildren().add(tree5);
		tree2.setParent(tree1);
		tree3.setParent(tree1);
		tree4.setParent(tree2);
		tree5.setParent(tree2);	
		
		session.save(tree1);
		session.getTransaction().commit();
	}

 

结果:



 

 

从树中取入数据代码:

@Test
	public void TestLoadTree(){
		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		Tree t=(Tree)session.load(Tree.class, 1);
		print(t);
		session.getTransaction().commit();
		
		
	}

	private void print(Tree tree) {
		System.out.println(tree.getName());
		for(Tree child: tree.getChildren()){
			print(child);
		}

 

取出结果:

 


 

  • 大小: 4.2 KB
  • 大小: 10.7 KB
分享到:
评论

相关推荐

    spring3+hibernate3+jquerytree

    通过与Spring MVC和Hibernate结合,jQuery Tree可以在前端展示由后端数据库动态生成的数据,提供交互式的用户界面。 **Spring MVC** 标签中的"springmvc"指的是Spring的Model-View-Controller(MVC)框架,它是...

    hibernate相关插件全集

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

    struts2+spring+hibernat Jquery ajax simple tree 动态生成树实例

    总结来说,"Struts2+Spring+Hibernate Jquery ajax simple tree 动态生成树实例"是一个综合运用Java后端框架和前端技术实现动态交互功能的案例。它展示了如何在后端利用SSH整合处理业务逻辑和数据,再通过Ajax和...

    hibernate3资源包

    10. **asm.jar**和**asm-tree.jar**:ASM库用于字节码操作,Hibernate利用它们在运行时动态生成Java类。 除此之外,可能还包含其他辅助库,如`cglib-nodep.jar`(代码生成库)和`ehcache.jar`(缓存库),用于提高...

    asm-tree-2.2.1-sources.jar.zip

    此外,ORM框架如Hibernate也可能使用ASM来生成数据库访问代码,提高运行时效率。 在开发过程中,如果需要自定义字节码操作,比如添加监控、性能优化或者安全控制,ASM Tree库是一个很好的选择。使用ASM Tree,...

    Hibernate所用jar包

    5. `javassist.jar`: 提供动态类生成和修改的功能,Hibernate用它来动态生成SQL语句对应的Java类。 6. `dom4j.jar`: XML解析库,Hibernate使用它来处理XML配置文件。 7. `slf4j-api.jar`和相应的实现库(如`slf4j-...

    cglib-2.2.jar asm-tree.jar asm-commons.jar asm.jar

    2. **性能优化**:在需要高性能代码生成的地方,如ORM框架(如Hibernate)中,CGlib可以帮助减少反射带来的性能损失。 3. **元编程**:ASM库允许开发者在运行时动态创建或修改类,这对于构建元编程框架或字节码级别...

    spring+hibernate配置与jar的配置下载

    - **Hibernate Tools**:这是一个非常有用的插件,它可以为Eclipse IDE提供额外的功能,包括自动生成Hibernate配置文件、代码生成等。具体安装步骤如下: - 打开Eclipse,然后点击“Help”菜单下的“Eclipse ...

    Hibernate API

    - `@Id`: 标识主键字段,通常与@GeneratedValue结合使用自动生成主键。 - `@Column`: 映射属性到数据库表的列。 4. **关系映射** - `@OneToOne`: 一对一关联。 - `@OneToMany`: 一对多关联,可设置`fetch`和`...

    用structs2生成树

    本教程将详细讲解如何利用Structs2框架来生成树形结构,以实现数据的层级展示。这个过程通常涉及到SSH(Struts2、Spring和Hibernate)集成开发环境,这三种技术的结合可以提供一个强大且灵活的后端解决方案。 首先...

    Ext3.2的TreePanel和GridPanel的分页与Hibernate的分页功能的影射

    2、在工程中找到“数据库脚本.sql”文档,然后在查询分析器中生成数据与测试数据 3、把工程布置到Tomcat服务器中去 4、在工程中找到“main.js”文档,该文档中是控制应用显示GridPanel和TreePanel示例的开关 5、在IE...

    案例8:Spring整合Spring MVC与Hibernate + EasyUI实现电子商城后台订单管理.pdf

    - EasyUI提供了丰富的UI组件,例如Tree控件,用于生成系统功能菜单,提高了用户体验。 通过以上步骤和技术点的详细解析,我们可以看出本案例充分利用了Spring、Spring MVC、Hibernate以及EasyUI的优势,构建了一个...

    extjs tree + json+struts2示例源代码

    可以利用ORM框架(如Hibernate)来操作数据库。 3. **生成JSON数据**:在Action类中,将查询到的树结构数据转换为JSON格式。可以使用JSON库(如org.json或com.google.gson)帮助完成这个过程。 4. **配置返回结果*...

    Hibernate_Annotation关联映射

    和其它许多批注一样,在多对多关联中很多值是自动生成,党双向多对多关联中没有定义任何物理映射时,Hibernate根据以下规则生成相应的值,关联表名:主表表名+下划线+从表表名,关联到主表的外键名:主表名+下划线+...

    Extjs_Tree_JSON_ _Struts2_例子

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web开发中,JSON常被用来传输数据。 #### 应用场景: 在这个示例中,前端使用Extjs发送请求到后端...

    ajax动态树的实现

    - **POJO类**:`com.tree.hibernate.TreeDemo`,表示数据模型对象。 - **DAO类**:`com.tree.hibernate.TreeDemoDAO`,负责数据库操作。 #### 四、业务逻辑层 **1. TreeBiz类实现** ```java package com.tree.biz...

    案例8:Spring整合Spring MVC与Hibernate + EasyUI实现电子商城后台订单管理.docx

    - `tree_data2.json`:为`ordermanager.jsp`提供的JSON格式的数据源,用于生成系统功能菜单。 - `Easyui`目录:包含使用Easy UI控件所需的js、css等文件。 #### 四、具体实现细节 1. **创建实体类**: - 在`...

    ssh(struts2.3.4+spring3.2+hibernate4.1.1)整合中jar包作用介绍

    ### SSH (Struts2.3.4 + Spring3.2 + Hibernate4.1.1) 整合中JAR包作用介绍 #### 一、SSH综述 SSH框架指的是Struts2、Spring与Hibernate三个开源项目的集成应用。这种集成不仅提高了开发效率,还提升了应用程序的...

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

    总的来说,这个项目结合了多种技术,利用Struts2处理请求,Spring进行依赖管理和事务控制,Hibernate处理数据,Freemarker生成动态页面,jQuery提供前端交互,而jquery-treeview则提供了树形菜单的可视化。...

Global site tag (gtag.js) - Google Analytics