package org.lmy.daos.impl ;
import java.util.Iterator;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.lmy.beans.Person;
import org.lmy.daos.PersonDAO;
public class PersonDAOImpl implements PersonDAO
{
// 构造方法实例化session对象
public PersonDAOImpl()
{
// 找到Hibernate配置文件
Configuration config = newConfiguration().configure() ;
//在配置中取出hibernate SessionFactory
SessionFactory factory =config.buildSessionFactory() ;
//在SessionFactory中取出一个Session
this.session =factory.openSession() ;
}
//进行登陆验证的方法
public boolean login(Person person) throwsException
{
boolean flag = false ;
try {
String hql =”FROM Person p WHERE p.id= :id and p.password= :password” ;
Query q =this.session.createQuery(hql) ;
q.setParameter(“id”,person.getId());
q.setParameter(“password”,person.getPassword());
List l =q.list() ;
Iterator iter= l.iterator() ;
if(iter.hasNext())
{
flag= true;
Personp = (Person)iter.next();
System.out.println(p.getName());
person.setName(p.getName());
}
} catch (RuntimeException e){
e.printStackTrace();
}
return flag ;
}
private Session session = null ;
// 所有的操作都是通过session进行的
// 向数据库中增加数据
public void insert(Person p)
{
// 开始session事务
Transaction tran =this.session.beginTransaction() ;
// 执行保存数据语句
this.session.save(p) ;
// 提交事务
tran.commit() ;
// 关闭Session
this.session.close() ;
}
// 修改数据库
public void update(Person p)
{
// 开始事务
Transaction tran =this.session.beginTransaction() ;
// 执行HQL语句
this.session.update(p) ;
// 提交事务
tran.commit() ;
}
// 按ID查询:推荐使用HQL Hibernate官方推荐的查询语言
public Person queryById(String id)
{
Person p = null ;
// 使用Hibernate HQL查询语言
String hql = “FROM Person as pWHERE 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() ;
}
return p ;
}
// hibernate hql删除数据
// Hibernate2、Hibernate 3 通用的删除
//此方法删除数据前,一定要先查找到数据对象,性能呢?
public void delete(Person p)
{
Transaction tran =this.session.beginTransaction() ;
// 执行HQL语句
this.session.delete(p) ;
// 提交事务
tran.commit() ;
}
// 在Hibernate3之中HQL中的语句进行了修改,增加了删除指令
public void delete(String id)
{
String hql = “DELETE PersonWHERE id=?” ;
Query q =this.session.createQuery(hql) ;
// 把参数设置
q.setString(0,id) ;
// 执行更新语句
q.executeUpdate() ;
// 进行事务处理
this.session.beginTransaction().commit();
}
// 查询全部数据,写HQL
public List queryAll()
{
List l = null ;
String hql = “FROM Person as p”;
Query q =this.session.createQuery(hql) ;
l = q.list() ;
return l ;
}
// 模糊查询
public List queryByLike(String cond)
{
List l = null ;
String hql = “FROM Person as pWHERE p.name like ?” ;
Query q =this.session.createQuery(hql) ;
q.setString(0,”%”+cond+”%”);
l = q.list() ;
return l ;
}
}
以上就是hibernate框架增删查改数据库操作的实例,希望可以给你带来帮助!