文档章节

Hibernate工具类

JasonMs
 JasonMs
发布于 2015/08/20 17:37
字数 636
阅读 11
收藏 0
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;
}
 
}

 

本文转载自:http://www.cnblogs.com/zhangjie9142/p/3996135.html

JasonMs

JasonMs

粉丝 7
博文 49
码字总数 20597
作品 1
朝阳
程序员
私信 提问
Hibernate jar包介绍

hibernate-core-4.3.0.Final.jar(Hibernate的核心库,必须使用的jar)+ cglib-asm.jar(cglib库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必须使用的jar)+ dom4j.jar(dom...

拷贝忍者卡卡习
2017/01/13
65
0
伟大源友啊,怎样快速实现编码,既然有mybatis-generator快速生成代码,那么是不是还有..?

使用过ibatis 的人,都知道可以通过 mybatis-generator 生成器,快速生成bean实例,及dao代码类; 如果使用hibernate 注解呢? bean实例能生成吗? 或者有相对应的工具吗; 为了实现快速开发,我就差...

尾生
2017/03/23
287
3
杨老师课堂之JavaEE三大框架Hibernate入门第一课

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/80998421 本篇任务 教学导航 CRM(Customer Relationship Management)客户关系管理...

杨校
2018/07/11
0
0
杨老师课堂之JavaEE三大框架Hibernate入门教程第一课

本篇任务 1. 使用Hibernate框架完成对客户的增删改查的操作 教学导航 1. 能够说出Hibernate的执行流程 2. 能够独立使用Hibernate框架完成增删改查的操作 框架和CRM项目的整体介绍 1. 什么是C...

杨校
2018/07/11
0
0
jar包作用

hibernate中jar包的作用 (1)hibernate3.jar: Hibernate的核心库,没有什么可说的,必须使用的jar包 (2)cglib-asm.jar: CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,...

长征2号
2017/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL8.0.17 - Multi-Valued Indexes 简述

本文主要简单介绍下8.0.17新引入的功能multi-valued index, 顾名思义,索引上对于同一个Primary key, 可以建立多个二级索引项,实际上已经对array类型的基础功能做了支持 (感觉官方未来一定...

阿里云官方博客
25分钟前
3
0
make4.1降级 make-3.81、2错误

在编译 make-3.82 的时候出现如下错误提示 glob/glob.c:xxx: undefined reference to `__alloca'` 修改 /glob/glob.c // #if !defined __alloca && !defined __GNU_LIBRARY__ # ifdef __GNUC......

Domineering
26分钟前
2
0
Rainbond集群的安装和运维的原理

本文将解读Rainbond集群的安装和运维的原理,使用户基本了解Rainbond的安装机制和运维重点,便于用户搭建大型Rainbond集群。 1.Rainbond集群节点概述 1.1 节点分类 属性 类型 说明 manage 管...

好雨云帮
37分钟前
5
0
好程序员大数据学习路线分享UDF函数

1.为什么需要UDF? 1)、因为内部函数没法满足需求。 2)、hive它本身就是一个灵活框架,允许用自定义模块功能,如可以自定义UDF、serde、输入输出等。 2.UDF是什么? UDF:user difine fun...

好程序员官方
40分钟前
4
0
Groovy中 Base64 URL和文件名安全编码

Base64 URL和文件名安全编码 Groovy支持Base64编码很长一段时间。 从Groovy 2.5.0开始,我们还可以使用Base64 URL和Filename Safe编码来使用encodeBase64Url方法对字节数组进行编码。 结果是...

白石
43分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部