Hibernate 树状映射简单模拟
来源:互联网 发布:jquery.min.js下载 编辑:程序博客网 时间:2024/05/22 22:16
树状结构的设计
在同—个类中使用OneToMany和ManyTo0ne
参考下面代码:
@Entity
public class Org {
private int id;
private String name;
private Set<Org> children = new HashSet<Org>();
private Org 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可省略即为@OneToMany的默认值fetch=FetchType.LAZY
// 若树形较小可使用EAGER 一次全部载入内存
// 若为LAZY则查询树形时不会一次全部载入内存(适用于较大的树形),会每取一个叶子节点就select一次
public Set<Org> getChildren() {return children;
}
public void setChildren(Set<Org> children) {
this.children = children;
}
@ManyToOne
@JoinColumn(name="parent_id")
public Org getParent() {
return parent;
}
public void setParent(Org parent) {
this.parent = parent;
}
}
测试代码如下:
@Test
public void testSave() {
Org o = new Org();
o.setName("总公司");
Org o1 = new Org();
o1.setName("分公司1");
Org o2 = new Org();
o2.setName("分公司2");
Org o11 = new Org();
o11.setName("分公司1下部门1");
Org o12 = new Org();
o12.setName("分公司1下部门2");
o.getChildren().add(o1);
o.getChildren().add(o2);
o1.getChildren().add(o11);
o1.getChildren().add(o12);
o11.setParent(o1);
o12.setParent(o1);
o1.setParent(o);
o2.setParent(o);
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(o);
session.getTransaction().commit();
session.close();
}
@Test
public void testLoad() {
testSave();
Session session = sessionFactory.openSession();
session.beginTransaction();
Org o = (Org)session.load(Org.class, 1);
print(o, 0);// 打印出简单的树状结构
session.getTransaction().commit();
session.close();
}
private void print(Org o, int level) {
String preStr = "";
for(int i=0; i<level; i++) {
preStr += "----";
}
System.out.println(preStr + o.getName());
for(Org child : o.getChildren()) {
print(child, level+1);// 递归
}
}
- Hibernate 树状映射简单模拟
- hibernate之树状映射
- hibernate树状结构映射
- Hibernate 树状映射
- hibernate映射应用 - 树状结构
- Hibernate——树状映射
- hibernate之树状映射结构
- Hibernate——树状映射
- hibernate--树状映射(至关重要)
- 【Hibernate】简单集合映射
- 简单模拟实现hibernate
- hibernate 映射 set 值对象 简单映射
- Hibernate 简单数据集合映射
- Hibernate继承映射简单入门
- Hibernate基础------》关系映射---》继承映射-》简单映射
- 模拟hibernate orm映射小例子 理解hibernate原理
- Hibernate Set集合映射简单例子
- Hibernate List集合映射简单例子
- 雷神之锤 - 神一般存在的Sqrt函数
- 编程: 类的另解
- POJ:1273 Drainage Ditches(网络最大流模版题)
- PyGrADS可以很方便地将GrADS中的变量导入Python内存空间
- 排序算法之堆排序
- Hibernate 树状映射简单模拟
- Tsinsen P3994(大等于n的最小完全平方数-比细心)
- JLink v8克隆版破解向导
- java数组初始化与初始值
- sql server中PAGELATCH_x和PAGEIOLATCH_x解析
- flex中的DataGrid
- 机房收费系统——组合查询
- hdu 1565 方格取数(1) 最大点权独立集 网络流
- 中断子系统3_中断入口处理