博为峰Java技术文章 ——JavaEE Hibernate初始化类

博为峰小博老师

Session对象是Hibernate中数据库持久化操作的核心,它负责Hibernate所有的持久化操作,通过它开发人员可以实现数据库基本的增、删、查、改的操作。而Session对象又是通过SessionFactory对象获取的,可以通过Configuration对象创建SessionFactory,关健代码如下:

Configuration对象会加载Hibernate的基本配置信息,如果没有在configure()方法中指定加载配置XML文档的路径信息,Configuration对象会默认加载项目classpath根目录下的hibernate.cfg.xml文件。

创建HibernateUtil类,用于实现对Hibernate的初始化。代码如下:

publicclassHibernateUtil {

privatestaticStringCONFIG_FILE_LOCATION="/hibernate.cfg.xml";

privatestaticfinalThreadLocalthreadLocal=newThreadLocal();

privatestaticConfigurationconfiguration=newConfiguration();

privatestaticorg.hibernate.SessionFactorysessionFactory;//SessionFactory对象

privatestaticStringconfigFile=CONFIG_FILE_LOCATION;

static{

try{

configuration.configure(configFile);//加载Hibernate配置文件

sessionFactory=configuration.buildSessionFactory();

}catch(Exception e) {

System.err

.println("%%%% Error Creating SessionFactory %%%%");

e.printStackTrace();

}

}

/**

*获取Session

*/

publicstaticSession getSession()throwsHibernateException {

Session session = (Session)threadLocal.get();

if(session ==null|| !session.isOpen()) {

if(sessionFactory==null) {

rebuildSessionFactory();

}

session = (sessionFactory!=null) ?sessionFactory.openSession()

:null;

threadLocal.set(session);

}

returnsession;

}

/**

*重建会话工厂

*/

publicstaticvoidrebuildSessionFactory() {

try{

configuration.configure(configFile);

sessionFactory=configuration.buildSessionFactory();

}catch(Exception e) {

System.err.println("%%%% Error Creating SessionFactory %%%%");

e.printStackTrace();

}

}

/**

*获取SessionFactory对象

*/

publicstaticSessionFactory getSessionFactory(){

returnsessionFactory;

}

/**

*关闭Session

*/

publicstaticvoidcloseSession()throwsHibernateException {

Session session = (Session)threadLocal.get();

threadLocal.set(null);

if(session !=null) {

session.close();

}

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文包括: 1、CRM 项目的整体介绍 2、Hibernate 框架概述 3、Hibernate 快速入门 4、H...
    廖少少阅读 3,485评论 9 66
  • Hibernate: 一个持久化框架 一个ORM框架 加载:根据特定的OID,把一个对象从数据库加载到内存中OID...
    JHMichael阅读 1,995评论 0 27
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 目录 1. Hibernate框架的概述 1.1 Hibernate简介 1.2 为什么要学习Hibernate ...
    深海鱼Q阅读 1,043评论 0 14
  • 本文包括:1、Hibernate的持久化类2、Hibernate 持久化对象的三个状态(难点)3、Hibernat...
    廖少少阅读 1,484评论 0 13