Hibernate之DAO操作基础类

来源:互联网 发布:电脑图文编辑软件 编辑:程序博客网 时间:2024/05/16 10:17

/**
 * DAO基础操作类
 */
package com.hs.ask.dao.impl;


import java.io.Serializable;
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.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.hs.ask.util.Pager;

public abstract class BaseDaoImpl extends HibernateDaoSupport {
 
   protected static ApplicationContext applicationContext = new  ClassPathXmlApplicationContext("/applicationContext.xml");
  
   protected static SessionFactory sessionFactory = (SessionFactory) applicationContext.getBean("sessionFactory");
  
   Session session = null;
  
   Transaction tran = null;
  
   /**
    * 新增对象
    * @param object
    */
 public Object saveObject(Object object)  {
  try{
   session = sessionFactory.openSession();
   tran = session.beginTransaction();
   session.save(object);
   tran.commit();
   return object;
     }catch (HibernateException e) {
   throw new HibernateException(e);
  } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
  }
 }
 
 /**
     * 修改对象
     */
  public void updateObject(Object object)  {
  try{
   session = sessionFactory.openSession();
   tran = session.beginTransaction();
   session.saveOrUpdate(object);
   tran.commit();
     }catch (HibernateException e) {
   throw new HibernateException(e);
  } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
  }
 }
 
  /**
     * 用语句修改对象
     */
  public void updateObjectByQuery(final String queryString,
       final Object[] parameters)  {
  try{
   session = sessionFactory.openSession();
   tran = session.beginTransaction();
   Query query = session.createQuery(queryString);
   for(int i=0,len=parameters.length;i<len;i++){
    query.setParameter(i, parameters[i]);
   }
   query.executeUpdate();
   tran.commit();
     }catch (HibernateException e) {
   throw new HibernateException(e);
  } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
  }
 }
 
  /**
     * 删除对象
     */
  public void deleteObject(Object object)  {
  try{
   session = sessionFactory.openSession();
   tran = session.beginTransaction();
   session.delete(object);
   tran.commit();
     }catch (HibernateException e) {
   throw new HibernateException(e);
  } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
  }
  }
 
  /**
   * 根据类型和ID取得一个对象
   */
  public Object get(Class clazz,Serializable id){
   try{
    session = sessionFactory.openSession();
    return session.get(clazz, id);
      }catch (HibernateException e) {
    throw new HibernateException(e);
   } finally {
    if (session != null && session.isOpen()) {
     session.close();
    }
   }
  }
 
  /**
   * 根据查询语句获得一个对象
   */
  public Object get(final String queryString, final Object[] parameters){
   try{
    session = sessionFactory.openSession();
    tran = session.beginTransaction();
    Query query = session.createQuery(queryString);
    for(int i=0,len=parameters.length;i<len;i++){
     query.setParameter(i, parameters[i]);
    }
    return query.uniqueResult();
      }catch (HibernateException e) {
    throw new HibernateException(e);
   } finally {
    if (session != null && session.isOpen()) {
     session.close();
    }
   }
  }
 
  /**
   * 不带参数查询列表(HQL)
   */
  public List find(final String queryString){
   try{
    session = sessionFactory.openSession();
    Query query = session.createQuery(queryString);
    return query.list();
   }catch (HibernateException e) {
    throw new HibernateException(e);
   } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
   }
  }
 
  /**
   * 带参数查询列表(HQL)
   */
  public List find(final String queryString, final Object[] parameters){
   try{
    session = sessionFactory.openSession();
    Query query = session.createQuery(queryString);
    for(int i=0,len=parameters.length;i<len;i++){
     query.setParameter(i, parameters[i]);
    }
    return query.list();
   }catch (HibernateException e) {
    throw new HibernateException(e);
   } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
   }
  }

  /**
   * 不带参数查询列表(SQL)
   */
  public List findBySQL(final String queryString){
   try{
    session = sessionFactory.openSession();
    Query query = session.createSQLQuery(queryString);
    return query.list();
   }catch (HibernateException e) {
    throw new HibernateException(e);
   } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
   }
  }
 
  /**
   * 带参数查询列表(SQL)
   */
  public List findBySQL(final String queryString, final Object[] parameters){
   try{
    session = sessionFactory.openSession();
    Query query = session.createSQLQuery(queryString);
    for(int i=0,len=parameters.length;i<len;i++){
     query.setParameter(i, parameters[i]);
    }
    return query.list();
   }catch (HibernateException e) {
    throw new HibernateException(e);
   } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
   }
  }
 
 
  /**
   * 不带参数查询列表(HQL)
   */
  public List findPage(final String queryString,Pager pager){
   try{
    session = sessionFactory.openSession();
    Query query = session.createQuery(queryString);
    int count = query.list().size();
          pager.setTotalCount(count);
          query.setFirstResult((pager.getCurrentPage() - 1) * pager.getPageLimit());
          query.setMaxResults(pager.getPageLimit());
    return query.list();
   }catch (HibernateException e) {
    throw new HibernateException(e);
   } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
   }
  }
 
  /**
   * 带参数查询列表(HQL)
   */
  public List findPage(final String queryString, final Object[] parameters,Pager pager){
   try{
    session = sessionFactory.openSession();
    Query query = session.createQuery(queryString);
    for(int i=0,len=parameters.length;i<len;i++){
     query.setParameter(i, parameters[i]);
    }
    int count = query.list().size();
          pager.setTotalCount(count);
          query.setFirstResult((pager.getCurrentPage() - 1) * pager.getPageLimit());
          query.setMaxResults(pager.getPageLimit());
    return query.list();
   }catch (HibernateException e) {
    throw new HibernateException(e);
   } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
   }
  }

  /**
   * 不带参数查询列表(SQL)
   */
  public List findPageBySQL(final String queryString,Pager pager){
   try{
    session = sessionFactory.openSession();
    Query query = session.createSQLQuery(queryString);
    int count = query.list().size();
          pager.setTotalCount(count);
          query.setFirstResult((pager.getCurrentPage() - 1) * pager.getPageLimit());
          query.setMaxResults(pager.getPageLimit());
    return query.list();
   }catch (HibernateException e) {
    throw new HibernateException(e);
   } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
   }
  }
 
  /**
   * 带参数查询列表(SQL)
   */
  public List findPageBySQL(final String queryString, final Object[] parameters,Pager pager){
   try{
    session = sessionFactory.openSession();
    Query query = session.createSQLQuery(queryString);
    for(int i=0,len=parameters.length;i<len;i++){
     query.setParameter(i, parameters[i]);
    }
    int count = query.list().size();
          pager.setTotalCount(count);
          query.setFirstResult((pager.getCurrentPage() - 1) * pager.getPageLimit());
          query.setMaxResults(pager.getPageLimit());
    return query.list();
   }catch (HibernateException e) {
    throw new HibernateException(e);
   } finally {
   if (session != null && session.isOpen()) {
    session.close();
   }
   }
  }
 
 
 
}