日期:2014-05-16  浏览次数:20784 次

hibernate的数据库访问例子
Hibernate 是一种强大,高性能的以对象到关系型数据库的持久化服务.开发人员可以基础语言
(包括关联,继承,多态,组合及java的集合框架),开发持久层.
====================================需要导入的Hibernate类包======================================
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;

==================================创建启动配置文件对象和会话工厂对象===============================
 private static Configuration configuration;
 private static SessionFactory sessionFactory;
 static {
  try
  {
   configuration=new Configuration();//创建启动配置文件对象
   configuration.configure("firsthibernate/hibernate.cfg.xml");//对应配置文件路径
   sessionFactory=configuration.buildSessionFactory();//创建会话实例
  }catch(Exception ex)
  {
   ex.printStackTrace();
  }
 }

==================================将持久化对象保存到数据库========================================
首先实例化一个持久化对象,然后设置持久化对象setXXX方法,最后调用事务处理方法
 public void saveStudents(Students students) throws Exception
 {
  Session session =sessionFactory.openSession();//启动一个会话对象用来保存用户会话信息
  Transaction transaction=null;//定义事务对象
  try
  {
   transaction=session.beginTransaction();//使用会话对象的方法,创建事务
   session.save(students);//save方法用来将持久化对象信息保存到数据库
   transaction.commit(); //提交事务,执行查询语句
  }catch(Exception ex)
  {
   if (transaction!=null)
   {
    transaction.rollback();//回滚事务,撤消查询语句
   }
   throw ex;
  }
  finally
  {
   session.close();//关闭会话状态,清空资源
  }
 }
==================================查询数据对象类的条件查询语句====================================
 public List findAllStudents() throws Exception
 {
  Session session =sessionFactory.openSession();//启动一个会话对象用来保存用户会话信息
  Transaction transaction=null;//定义事务对象
  Query qu=null;  //Hibernate 查询接口,能够执行复杂的HQL查询语句
  List studentsList=null; //用来保存所有的持久化类对象,数据的集合
  try
  {
   transaction =session.beginTransaction();//使用会话对象的方法,创建事务
   qu=session.createQuery("from Students where Age=?");//使用会话对象的方法,创建查询接口对象
   //注意:这里Students是持久化类对象,而非数据库表名,Age对应持久化对象的属性
   qu.setInteger(0, new Integer(12));//设置一个Integer类型的查询条件参数
   studentsList=qu.list();//获取持久化对象信息,以List集合的方式返回信息
   transaction.commit();//提交事务,执行查询语句
  }
  catch(Exception ex)
  {
   if (transaction!=null)
   {
    transaction.rollback();//回滚事务,撤消查询语句
   }
   throw ex;
  }
  finally
  {
   session.close();//关闭会话状态,清空资源
  }
  return studentsList;
 }

===================================删除持久化对象信息===============================================
删除时需要先查询出持久化对象的所有信息,最后调用事务处理方法
 public void deleteInfo(Students student) throws Exception 
 {
  Session session =sessionFactory.openSession();//启动一个会话对象用来保存用户会话信息
  Transaction transaction=null;//定义事务对象
  try
  {
   transaction=session.beginTransaction();//使用会话对象的方法,创建事务
   session.delete(student);//delete用来删除持久对象所对应的数据库中的记录
   transaction.commit(); //提交事务,执行查询语句    
  }
  catch(Exception ex)
  {
   if (transaction!=null)
   {
    transaction.rollback();//回滚事务,撤消查询语句
   }
   throw ex;
  }
  finally
  {
   session.close();//关闭会话状态,清空资源
  }
 }
===================================更新持久化对象信息===================================================
修改时需要先查询出持久化对象的所有信息,然后再修改持久化对象的setXXX方法,最后调用事务处理方法
 public void updateInfo(Students student) throws Exception 
 {
  Session session =sessionFactory.openSession();//启动一个会话对象用来保存用户会话信息
  Transaction transaction=null;//定义事务对象
  try
  {
   transaction=session.beginTransaction();//使用会话对象的方法,创建事务
   session.update(student);//udpate方法根据持久化对象的标实符来更新持久化对象所对应的数据库数据
   transaction.commit();//提交事务,执行查询语句
  }catch(Exception ex)
  {
   if (transaction!=null)
   {
    transaction.rollback();
   }
   throw ex;
  }
  finally
  {
   session.close();//回滚事务,撤消查询语句
  }
 }

=======================================查询持久化对象的所有信息===============================================
   transaction=ses