封装Hibernate数据库操作方法

来源:互联网 发布:苹果笔记本驱动软件 编辑:程序博客网 时间:2024/06/11 00:07
 
5.2.4  封装Hibernate数据库操作方法
由于本企业信息管理系统采用Hibernate对数据库进行访问、查询、添加、修改和删除等操作,所以应为每个子系统提供一个封装完善的数据库操作服务类HibernateService。在这个类中,定义了Configuration、SessionFactory等成员变量,还提供了对数据库操作的事务控制,数据库执行SQL语句方法。
public class HibernateService {
定义Configuration、SessionFactory成员变量。Configuration类负责管理Hibernate的配置信息,包括数据库JDBC驱动类、数据库URL、数据库dialect、数据库用户名和密码等信息。SessionFactory类负责创建Session实例,而SessionFactory实例则由Configuration实例创建。
private static Configuration configuration;
private static SessionFactory sessionFactory;
static {
   try {
在当前的CLASSPATH路径中寻找hibernate.cfg.xml配置文件,并将配置信息读入内存。
configuration = new  Configuration().configure();
由Configuration类实例创建SessionFactory类实例。为后继创建Session类实例作   准备。
        sessionFactory = configuration.buildSessionFactory();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
public static SessionFactory getSessionFactory() {
    return sessionFactory;
}
public static Configuration getConfiguration() {
    return configuration;
}
public static void rebuildSessionFactory() {
    synchronized(sessionFactory) {
        try {
              sessionFactory = getConfiguration().buildSessionFactory();
        } catch (Exception e) {
              e.printStackTrace();
        }
    }
}
public static void rebuildSessionFactory(Configuration cfg) {
    synchronized(sessionFactory) {
        try {
            sessionFactory = cfg.buildSessionFactory();
            configuration = cfg;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
1.创建Session类实例
public static Session getSession() {
    Session session = null;
    try {
        session = sessionFactory.openSession();
    } catch(Exception e){
        e.printStackTrace();
    }
   
    return session;
}
2.关闭SessionFactory类实例
public static void close(){
    try {
        sessionFactory.close();
    }catch(Exception e){
        e.printStackTrace();
    }
}
3.关闭Session类实例
public static void closeSession(Session session) {
    try {
        if (session != null) {
            session.close();
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}
数据库操作事务管理:数据库操作回滚。
public static void rollbackTransaction(Transaction transaction) {
    try {
        if(transaction != null)
            transaction.rollback();
    }catch(Exception e){
        e.printStackTrace();
    }
}
SQL语句执行方法,该方法返回一个List结果集。
    public static List execQuery(String sql) {
        List list = null;
        Transaction transaction = null;
        Session session = null;
        try {
            session = HibernateService.getSession();
            transaction = session.beginTransaction();
            list = session.createQuery(sql).list();
            transaction.commit();
            HibernateService.closeSession(session);
        }
        catch (HibernateException he) {
            he.printStackTrace();
            HibernateService.rollbackTransaction(transaction);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            HibernateService.closeSession(session);
        }
        return list;
    }
}
原创粉丝点击