日期:2014-05-18 浏览次数:20893 次
package com.sunyard.DBO;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.sunyard.bean.Person;
/*
 * 具体操作Hibernate的类
 * 增加、删除、修改、按ID查询、模糊查询、查询全部操作
 */
public class PersonDBO {
    
    //在Hibernate中,所有的操作都是在Session中完成
    //此Session不同于JSP中的Session
    private Session session=null;
     
    //在构造方法中实例化Session对象
    public PersonDBO(){
        //找到Hibernate配置
        Configuration config=new Configuration().configure();
        //从配置中取出SessionFactory
        SessionFactory factory=config.buildSessionFactory();
        //从SessionFactory中取出一个Session
        this.session=factory.openSession();
    }
    
    //所有的操作都是通过session进行的
    //插入
    public void insert(Person p){
        //打开事务
        Transaction tran=this.session.beginTransaction();
        //执行插入语句
        this.session.save(p);
        //提交事务
        tran.commit();
        this.session.close();
    }
    
    //更改
    public void update(Person p){
        //打开事务
        Transaction tran=this.session.beginTransaction();
        //执行插入语句
        this.session.update(p);
        //提交事务
        tran.commit();
        this.session.close();
    }
    
    //按ID查询 推荐用HQL
    public Person queryById(String id){
        Person p=null;
        //使用Hibermate查询语句
        String hql="from Person as p where p.id=?";
        //通过Query接口查询
        Query q=this.session.createQuery(hql);
        q.setString(0,id);
        List l=q.list();
        Iterator iter=l.iterator();
        if(iter.hasNext()){
            p=(Person)iter.next();
        }
        this.session.close();
        return p;
    }
    
    //删除1
    //使用此方法删除数据之前,必须先查找到数据对象,性能会打折
    public void delete(Person p){
        //打开事务
        Transaction tran=this.session.beginTransaction();
        //执行插入语句
        this.session.delete(p);