日期:2014-05-18 浏览次数:20888 次
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);