当前位置:编程学习 > JAVA >>

主题:hibernate生成tree(基于注解方式)

Java代码
[java]  
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;  
    }  
  
      
}  
 
生成的建表语句:
[sql]  
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)  
 
向树中插入数据
[java]  
@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();  
    }  
 
结果:
从树中取入数据代码:
[java]  
@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);  
        }  
 
取出结果:
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,