Learning Hibernate step by step -- 03 HibernateUtil帮助类
之前已经提到SessionFactory用来获取Session实例,Session实例负责处理数据库的持久化操作,且在单线程环境中使用。SessionFactory是线程安全的全局对象,应该只被初始化一次。为使SessionFactory易于使用,且只被创建一次,我们创建一个帮助类HibernateUtil.java负责维护SessionFactory的初始化工作。代码如下:
import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public final class HibernateUtil {private static final SessionFactory sessionFactory = buildSessionFactory();private HibernateUtil() {}private static SessionFactory buildSessionFactory() {try {// 根据hibernate.cfg.xml配置文件创建SessionFactoryreturn new Configuration().configure().buildSessionFactory();} catch (Throwable ex) {// 确保出现异常时在控制台输出错误日志信息System.err.println("创建SessionFactory初始化对象失败." + ex);throw new ExceptionInInitializerError(ex);}}public static SessionFactory getSessionFactory() {return sessionFactory;}}Session session = HibernateUtil.getSessionFactory().openSession();Transaction tx = null;try {tx = session.beginTransaction();// do something// ...tx.commit();} catch (Exception e) {if (tx != null) {tx.rollback();}throw e;} finally {session.close();}