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); }
取出结果:
相关推荐
通过与Spring MVC和Hibernate结合,jQuery Tree可以在前端展示由后端数据库动态生成的数据,提供交互式的用户界面。 **Spring MVC** 标签中的"springmvc"指的是Spring的Model-View-Controller(MVC)框架,它是...
这个扩展包可能包括了如Hibernate Search(用于实现全文搜索)、Hibernate Criteria Enhancer(增强Criteria查询功能)、Hibernate Tree(支持树形结构的数据模型)等组件。这些扩展使得Hibernate在应对特定需求时...
总结来说,"Struts2+Spring+Hibernate Jquery ajax simple tree 动态生成树实例"是一个综合运用Java后端框架和前端技术实现动态交互功能的案例。它展示了如何在后端利用SSH整合处理业务逻辑和数据,再通过Ajax和...
10. **asm.jar**和**asm-tree.jar**:ASM库用于字节码操作,Hibernate利用它们在运行时动态生成Java类。 除此之外,可能还包含其他辅助库,如`cglib-nodep.jar`(代码生成库)和`ehcache.jar`(缓存库),用于提高...
此外,ORM框架如Hibernate也可能使用ASM来生成数据库访问代码,提高运行时效率。 在开发过程中,如果需要自定义字节码操作,比如添加监控、性能优化或者安全控制,ASM Tree库是一个很好的选择。使用ASM Tree,...
5. `javassist.jar`: 提供动态类生成和修改的功能,Hibernate用它来动态生成SQL语句对应的Java类。 6. `dom4j.jar`: XML解析库,Hibernate使用它来处理XML配置文件。 7. `slf4j-api.jar`和相应的实现库(如`slf4j-...
2. **性能优化**:在需要高性能代码生成的地方,如ORM框架(如Hibernate)中,CGlib可以帮助减少反射带来的性能损失。 3. **元编程**:ASM库允许开发者在运行时动态创建或修改类,这对于构建元编程框架或字节码级别...
- **Hibernate Tools**:这是一个非常有用的插件,它可以为Eclipse IDE提供额外的功能,包括自动生成Hibernate配置文件、代码生成等。具体安装步骤如下: - 打开Eclipse,然后点击“Help”菜单下的“Eclipse ...
- `@Id`: 标识主键字段,通常与@GeneratedValue结合使用自动生成主键。 - `@Column`: 映射属性到数据库表的列。 4. **关系映射** - `@OneToOne`: 一对一关联。 - `@OneToMany`: 一对多关联,可设置`fetch`和`...
本教程将详细讲解如何利用Structs2框架来生成树形结构,以实现数据的层级展示。这个过程通常涉及到SSH(Struts2、Spring和Hibernate)集成开发环境,这三种技术的结合可以提供一个强大且灵活的后端解决方案。 首先...
- EasyUI提供了丰富的UI组件,例如Tree控件,用于生成系统功能菜单,提高了用户体验。 通过以上步骤和技术点的详细解析,我们可以看出本案例充分利用了Spring、Spring MVC、Hibernate以及EasyUI的优势,构建了一个...
可以利用ORM框架(如Hibernate)来操作数据库。 3. **生成JSON数据**:在Action类中,将查询到的树结构数据转换为JSON格式。可以使用JSON库(如org.json或com.google.gson)帮助完成这个过程。 4. **配置返回结果*...
和其它许多批注一样,在多对多关联中很多值是自动生成,党双向多对多关联中没有定义任何物理映射时,Hibernate根据以下规则生成相应的值,关联表名:主表表名+下划线+从表表名,关联到主表的外键名:主表名+下划线+...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web开发中,JSON常被用来传输数据。 #### 应用场景: 在这个示例中,前端使用Extjs发送请求到后端...
- **POJO类**:`com.tree.hibernate.TreeDemo`,表示数据模型对象。 - **DAO类**:`com.tree.hibernate.TreeDemoDAO`,负责数据库操作。 #### 四、业务逻辑层 **1. TreeBiz类实现** ```java package com.tree.biz...
- `tree_data2.json`:为`ordermanager.jsp`提供的JSON格式的数据源,用于生成系统功能菜单。 - `Easyui`目录:包含使用Easy UI控件所需的js、css等文件。 #### 四、具体实现细节 1. **创建实体类**: - 在`...
### SSH (Struts2.3.4 + Spring3.2 + Hibernate4.1.1) 整合中JAR包作用介绍 #### 一、SSH综述 SSH框架指的是Struts2、Spring与Hibernate三个开源项目的集成应用。这种集成不仅提高了开发效率,还提升了应用程序的...
总的来说,这个项目结合了多种技术,利用Struts2处理请求,Spring进行依赖管理和事务控制,Hibernate处理数据,Freemarker生成动态页面,jQuery提供前端交互,而jquery-treeview则提供了树形菜单的可视化。...
将两者结合,开发者可以构建服务器端动态生成的树形菜单,利用Hibernate从数据库中获取数据,然后在Struts的视图层以树形结构呈现,使得后台数据的管理更加灵活。 4. **treeview**:TreeView是另一种常见的...