Hibernate 另一个作业:Org树状结构设计
来源:互联网 发布:topsir 知乎 编辑:程序博客网 时间:2024/05/22 15:22
这个相比刚刚那个就不太重要了,但本身也很重要的。
要求:同一个类中使用One2Many,Many2One两种关系。
1.分析关系。所以只有一个类,类中有应该有父节点与子节点,parent,children
parent---------org ManyToOne
org-------------children OneToMany(cascade=CascadeType.ALL)
2.具体设计如下
org类中:id,
@ManyToOne @JoinColumn(name="parent")
parent
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
children
3.测试代码比较复杂,因为要打印出来层级的树状结构,所以要用递归的方式加上前缀字符串。
贴下测试的代码过来:
testSave:(跟老师的代码基本一样)
Session s = sf.getCurrentSession();
s.beginTransaction();
Org2 o = new Org2();//对象赋值
o.setName("总公司");
Org2 o1 = new Org2();
o1.setName("子公司1");
Org2 o2 = new Org2();
o2.setName("子公司2");
Org2 o11 = new Org2();
o11.setName("子公司1的子公司1");
Org2 o21 = new Org2();
o21.setName("子公司2的子公司1");
o.getChildren().add(o1);
o.getChildren().add(o2);
o1.getChildren().add(o11);
o2.getChildren().add(o21);
o1.setParent(o);
o2.setParent(o);
o11.setParent(o1);
o21.setParent(o2);
s.save(o);//多方便,hibernate优点的体现!
s.getTransaction().commit();
Load并打印的测试代码:(跟老师的也差不多一样)
@Test
public void testLoad() {
testSave();
Session s = sf.getCurrentSession();
s.beginTransaction();
Org2 o = (Org2) s.get(Org2.class, 1);//数据库到对象的转换
print(o, 0);//打印方法
s.getTransaction().commit();
}
private void print(Org2 o, int level) {//打印出树状结构的方法
String strBuilder = "";
for (int i = 0; i <= level; i++) {//起作用,搞出层
strBuilder += "----";
}
System.out.println(strBuilder + o.getName());
for (Org2 org : o.getChildren()) {
print(org, level + 1);//递归调用自身,打印深层节点
}}
总结:做了两个作业,再有代码的情况下都做出来了,但是觉得对关系的理解还是有点不到位,总会有点蒙的成分在里面,要勤加练习啊!!
- Hibernate 另一个作业:Org树状结构设计
- Hibernate之树状结构设计
- hibernate注解形式的树状结构设计
- 【hibernate框架】练习-树状结构设计(非常重要)
- 《Hibernate学习笔记十一》:树状结构设计
- Hibernate学习实例:关联表的树状结构设计
- 结构设计
- 结构设计
- 【SqlServer-无限递归树状图结构设计和查询】
- 【SqlServer-无限递归树状图结构设计和查询】
- hibernate org.hibernate.TypeMismatchException
- hibernate org.hibernate.PropertyNotFoundException
- bzoj3236 作业 莫队+树状数组
- 莫队+树状数组 AHOI 作业
- Hibernate表现树状结构
- hibernate树状结构
- hibernate之树状映射
- hibernate树状结构映射
- Struts2拦截器总结
- 注意内存越界
- apk 反编译以及反编译后重新生成apk --apktool工具的使用
- SQL语法、语句
- ASIHTTPRequest 详解
- Hibernate 另一个作业:Org树状结构设计
- asp.net邮箱源码
- instanceof
- 了解 XA 事务
- 测试优化速度代码
- 让自己的软件实现拖拽打开文件
- 设计
- Qt字符串转换和处理----山路十八弯
- android基本概念-android系统架构