实体类
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);
}
}
}
分享到:
相关推荐
◎工程环境:MyEclipse8.5+MySQL+Hibernate3.0 ◎系统介绍: 界面设计简洁、友好、美观大方。 操作简单、快捷方便 数据存储安全、可靠。 信息分类清晰、准确。 强大的查询功能,保证数据查询的灵活性。 提供统计报表...
- 章节知识点的分层和树状展示 - 管理广播消息的推送、系统设置的修改 目前项目基于以下平台(框架、库): - JDK 1.8 - Tomcat 8.0 (with WebSocket) - Hibernate 5.1 - Struts 2.5 - Spring 4.3 - JFreeChart ...
章节知识点的分层和树状展示 管理广播消息的推送、系统设置的修改 目前项目基于以下平台(框架、库): JDK 1.8 Tomcat 8.0 (with WebSocket) Hibernate 5.1 Struts 2.5 Spring 4.3 JFreeChart 1.0.19 Maven ...
该平台使用了maven作为项目管理,使用了web开发流行的框架便于学习使用,具体使用了spring、springmvc、spring ache (安全)shiro、hibernate、freemark等框架,为了统一页面风格使用DWZ作为页面富客户端的展示。...
WEB高级前后台分离思维-懒加载无限级树形菜单 动态页面的静态化处理 大并发展示优化,动态页面的静态化 深入理解JDK动态代理本质 企业级高并发缓存解决方案 性能优化之Oracle语句优化雾区 前后台数据验证架构源码级...
页面模板控制前台页面所展示出来的显示效果,点击“系统管理”左侧功能菜单里的“模板管理”,所有模板都按页面类型树状显示,如下图所示: 点击某个模板末级节点,可以查看模板详细html代码,对模板进行编辑修改...
在这颗树中,表格(table)是以小圆点的方式展现的,左键点击这个圆点,程序将在右侧打开一个Sql语句操作窗口,并执行“select * from table”语句,最后在下方以表格的形式展现给您;如果您用右键点击这个圆点,...
4、机构管理:公司组织架构维护,支持多层级结构的树形结构。5、职位管理:用户职务管理,职务可作为用户的一个标签,职务目前没有和权限等其他功能挂钩。6、菜单管理:菜单目录,菜单,和按钮的维护是权限控制的...
4、机构管理:公司组织架构维护,支持多层级结构的树形结构。 5、职位管理:用户职务管理,职务可作为用户的一个标签,职务目前没有和权限等其他功能挂钩。 6、菜单管理:菜单目录,菜单,和按钮的维护是权限控制...
第 1章 STRUTS2入门................................................................................................................................................3 第 2章STRUTS2晋级.....................