Hibernate工具类

package util;

import java.util.ArrayList;
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 org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

import entity.UserInfo;

public class HibernateUtil
{
  private static SessionFactory sessionFactory;

 /**
 * @return 获取会话工厂
 */
  public static SessionFactory getSessionFactory()
  {
    //第一步:读取Hibernate的配置文件  hibernamte.cfg.xml文件
    Configuration con=new Configuration().configure();
    //第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息
    ServiceRegistryBuilder regbulider=new ServiceRegistryBuilder().applySettings(con.getProperties());
    //创建注册服务
    ServiceRegistry reg=regbulider.buildServiceRegistry();
    //第三步:创建会话工厂
    SessionFactory sessionFactory=con.buildSessionFactory(reg);
    return sessionFactory;
  }

 /**
 * @return 获取会话对象
 */
  public static Session getSession()
  {
     return getSessionFactory().openSession();
  }

  /**
 * @param obj 添加数据
 * @return
 */
  public static boolean add(Object obj)
  {
    Session session=null;
    Transaction tran=null;
    boolean result=false;
    try
    {
        session=getSession();
        tran=session.beginTransaction();
        session.save(obj);
        tran.commit();
        result=true;
    }
    catch (Exception e)
    {
       if(tran!=null)
       {
           //事物回滚
           tran.rollback();
       }
    }
    finally
    {
        if(session!=null)
        {
            //关闭session
            session.close();
        }
    }
    return result;
  }

  /**
 * @return 更新数据
 * 参数为修改的主键id对象
 */
public static boolean update(Object object)
  {
        Session session=null;
        Transaction tran=null;
        boolean result=false;
        try
        {
            session=getSession();
            tran=session.beginTransaction();
            session.update(object);
            tran.commit();
            result=true;
        }
        catch (Exception e)
        {
           if(tran!=null)
           {
               //事物回滚
               tran.rollback();
           }
        }
        finally
        {
            if(session!=null)
            {
                //关闭session
                session.close();
            }
        }
        return result;
      }

  /**
 * @param c
 * @param obj  查询一条数据根据主键的id号
 * @return
 */
  public static Object get(Class c,int obj)
  {
        Session session=null;
        Object object=null;
        try
        {
            session=getSession();
            object=session.get(c,obj);
        }
        catch (Exception e)
        {
        }
        finally
        {
            if(session!=null)
            {
                //关闭session
                session.close();
            }
        }
        return object;
  }

  /**
 * @param obj
 * @return 删除数据
 */
public static boolean delete(Object obj)
  {
        Session session=null;
        Transaction tran=null;
        boolean result=false;
        try
        {
            session=getSession();
            tran=session.beginTransaction();
            session.delete(obj);
            tran.commit();
            result=true;
        }
        catch (Exception e)
        {
           if(tran!=null)
           {
               //事物回滚
               tran.rollback();
           }
        }
        finally
        {
            if(session!=null)
            {
                //关闭session
                session.close();
            }
        }
        return result;
  }

  /**
 * @param <T> 查询多条记录
 * @param sql  sql语句
 * @param param 参数数组
 * @return
 */
 @SuppressWarnings("unchecked")
public static <T> List<T> query(String sql,String[] param)
  {
      List<T> list=new ArrayList<T>();
      Session session=null;
       try
        {
            session=getSession();
            Query query=session.createQuery(sql);
            if(param!=null)
            {
                for(int i=0;i<param.length;i++)
                {
                    query.setString(i,param[i]);
                }
            }
            list=query.list();
        }
        catch (Exception e)
        {
        }
        finally
        {
            if(session!=null)
            {
                session.close();
            }
        }
      return list;
  }
  /**
 * @param sql
 * @param param 查询单条记录
 * @return
 */
public static Object queryOne(String sql,String[] param)
  {
      Object object=null;
      Session session=null;
       try
        {
            session=getSession();
            Query query=session.createQuery(sql);
            if(param!=null)
            {
                for(int i=0;i<param.length;i++)
                {
                    query.setString(0,param[i]);
                }
                object=query.uniqueResult();
            }
        }
        catch (Exception e)
        {
        }
        finally
        {
            if(session!=null)
            {
                session.close();
            }
        }
      return object;
  }
/**
 * @param <T>
 * @param sql
 * @param param
 * @param page
 * @param size
 * @return 实现分页查询
 */
@SuppressWarnings("unchecked")
public static <T> List<T> queryByPage(String sql,String[] param,int page,int size)
  {
      List<T> list=new ArrayList<T>();
      Session session=null;
       try
        {
            session=getSession();
            Query query=session.createQuery(sql);
            if(param!=null)
            {
                for(int i=0;i<param.length;i++)
                {
                    query.setString(i,param[i]);
                }
            }
            //筛选条数
            query.setFirstResult((page-1)*size);
            query.setMaxResults(size);
            list=query.list();
        }
        catch (Exception e)
        {
        }
        finally
        {
            if(session!=null)
            {
                session.close();
            }
        }
      return list;
  }
/**
 * @param hql
 * @param pras
 * @return返回数据个数
 */
public static int getCount(String hql, String[] pras) {
    int resu = 0;
    Session s = null;
    try {
        s = getSession();
        Query q = s.createQuery(hql);
        if (pras != null) {
            for (int i = 0; i < pras.length; i++) {
                q.setString(i, pras[i]);
            }
        }
        resu = Integer.valueOf(q.iterate().next().toString());
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (s != null)
            s.close();
    }
    return resu;
}

}
时间: 2024-08-07 20:32:16

Hibernate工具类的相关文章

hibernate工具类HibernateUtil详解

1.为什么要用hibernateUtil这个类,先看这段代码:  //加载配置文件信息默认为hiberna.cfg.xml,如果不是的话那么就在config()方法里面去解析他      Configuration config = new Configuration();      config.config();      //创建工厂      SessionFactory factory = config.bulidSessionFactory();      //得到session  

j2ee之hibernate工具类

package com.newtouch.utils; import org.hibernate.*;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.orm.hibernate4.support.HibernateDaoSupport;import org.springframework.stereotype.Component; import java.io.Ser

Hibernate工具类_抽取重复核心代码

问题:在Hibernate中每次执行一次操作总是需要加载核心配置文件,获取连接池等等都是重复动作,所以抽取出来 解决: package com.xxx.utils; /** *Hibernate的工具类 *@author cxh */ import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg

hibernate 配置文件 和一个 id生成类BaseEntity.java 和一个hibernate工具类 HibernatUtils.java

package com; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.entity.Food;

一个简单的Hibernate工具类HibernateUtil

HibernateUtil 1 package com.wj.app.util; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.cfg.Configuration; 6 import org.hibernate.service.ServiceRegistry; 7 import org.hibernate.service.ServiceRegistry

hibernate之工具类

package util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** * Hibernate工具类 * 作用: 获取session与关闭session * @author 尹涛 * */ public class HibernateUtil { // 创建私有 静态 线程对象 private static Thread

浅谈:Hibernate中HibernateUtil工具类

首先我们需要知道为什么咱们要创建Hibernate工具类 一些固定而且经常使用的步骤我们期望做成一个工具类,以后再需要重复步骤时咱们仅需要引用此工具类就可以,从而避免了一直创建重复代码.比如加载数据库的驱动等,这里Hibernate中我们每个主程序都需要加载hibernate.cfg.xml文件.创建SessionFactory对象.创建Session对象.关闭session.这些都是固定化的步骤,因此我们将它们写在工具类HibernateUtil中,以后咱们直接引用此文件创建各对象即可,大大减

开发积累—泛型工具类

前言:使用SSH2中使用的泛型工具类,以前写泛型比较麻烦.今天收集到一个工具类,好东呀!!分享给大家,绝对有用.JAVA版的web应用程序使用. 示例代码: import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /** *Hibernate工具类,用于获取S

为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了? Hibernate操作的步骤如下: 1. 获得Configuration对象 2. 创建SessionFactory 3. 创建Session 4. 打开事务 5. 进行持久化操作.比如上面的添加用户操作 6. 提交事务 7. 发生异常,回滚事务