hibernate之工具类HibernateUtil

1.最简单的工具类,实现SessionFactory的单例共享,session的管理

package com.cc.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {
    //创建工厂类,是静态的单例的,只能被赋值一次
    private static final SessionFactory sessionFactory=buildSessionFactory();
    /** init sessionFactory */
    private static SessionFactory buildSessionFactory(){
        SessionFactory sessionFactory=null;
        try{
            //configure函数里面可以写hibernate的配置文件,空则默认为hibernate.cfg.xml
            Configuration configuration=new Configuration().configure();
            ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
            sessionFactory= configuration.buildSessionFactory(serviceRegistry);
        }
        catch(Throwable te){
            System.err.println("init sessionFactory Error:"+te);
            te.printStackTrace();
        }
        return sessionFactory;
    }
    /** get session */
    public static Session getSession(){
        //得到session
        Session session=sessionFactory.openSession();
        return session;
    }
}

2.将常见事务方法封装进工具类

添加如下方法:

//删除
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;
}
//更新
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;
}
//增加
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;
}
//执行sql语句,返回单条记录
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;
}   
参考:http://blog.csdn.net/hanhan313/article/details/8125924
时间: 2024-10-11 06:34:25

hibernate之工具类HibernateUtil的相关文章

hibernate工具类HibernateUtil详解

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

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简单工具类的封装

通过该工具类可以获得hibernate的session对象,并在项目中使用该工具 public class HibernateUtil { private static SessionFactory sessionFactory; //表示构造方法私有化,保证单例模式 private MyHibernateSessionFactory(){ } /** * @return 获取会话工厂 */ public static SessionFactory getSessionFactory() { i

hibernate 的工具类

package com.anrongtec.utils; import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/** * 工具类. * * @author CAOXIAOYANG * */public class HibernateUtil { private static final SessionFactory sessionFactor

一个简单的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 validator工具类

一.相关的gradle配置文件 // https://mvnrepository.com/artifact/javax.el/javax.el-api compile group: 'javax.el', name: 'javax.el-api', version: '3.0.0' // https://mvnrepository.com/artifact/org.glassfish.web/javax.el compile group: 'org.glassfish.web', name: '

Hibernate基础工具类

1 import org.hibernate.Session; 2 import org.hibernate.SessionFactory; 3 import org.hibernate.cfg.Configuration; 4 5 public class Hibernate_Util { 6 7 private static SessionFactory factory; 8 9 static { 10 Configuration configure = new Configuration(

浅谈:Hibernate中HibernateUtil工具类

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

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