,,Java Hibernate使用SessionFactory创建Session案例详解

,,Java Hibernate使用SessionFactory创建Session案例详解

本文主要介绍Java Hibernate使用SessionFactory创建会话的详细说明。本文通过一个简单的案例来说明对这项技术的理解和使用。以下是详细内容,有需要的朋友可以参考一下。

SessionFactory在Hibernate中实际上是作为一个缓冲区,缓冲HIbernate自动生成的SQL语句和其他映射数据,缓冲一些将来可能重用的数据。

为了创建一个SessionFactory对象,应该在Hibernate初始化的时候创建一个Configuration类的实例,把已经写好的映射文件交给他处理,这样Configuration对象就可以创建一个SessionFactory对象。当SessionFactory对象成功创建后,配置对象就没用了,可以直接放弃。

示例代码:

配置cfg=新配置();

CFG . add resource(' com/demo/hibernate/beans/user . hbm . XML ');

CFG . set property(system . get properties());

session factory session factory=CFG . buildsession factory();

SessionFactory使用设计模式工厂模式用户程序从工程类SessionFactory获取会话实例。设计者的意图是它可以在整个应用程序中共享。通常,一个项目只需要一个SessionFactory就足够了,所以我们设计了HibernateSessionFactory.java这个辅助类来定义静态配置和SessionFactory对象。

私有静态最终配置CFG=new Configuration();

私有静态org . hibernate . session factory session factory;

整个应用程序只存在这两个对象的一个实例,因此定义了一个本地线程变量供用户访问:

私有静态final thread local thread local=new thread local();

thread变量是静态的,为每个访问该线程的用户生成一个实例。这样,当你想获取Session对象时,首先要从当前用户的线程中获取Session对象。如果尚未创建会话,您将从SessionFactory创建一个会话。此时,将判断是否已经创建了SessionFactory对象。对于这个应用程序,只有一个,所以只有第一次访问该变量的用户才会创建该对象。

获取HibernateSessionFactory.java会话对象的过程如下

公共静态会话currentSession()引发HibernateException {

Session Session=(Session)thread local . get();

if (session==null) {

if (sessionFactory==null) {

尝试{

cfg.configure(配置文件位置);

session factory=CFG . buildsessionfactory();

}

捕捉(异常e) {

system . err . println(“% % % %创建SessionFactory时出错% % %);

e . printstacktrace();

}

}

session=session factory . open session();

threadLocal.set(会话);

}

返回会话;

}

首先,确定threadLocal中是否有Session对象。如果没有会话对象,则创建会话对象。创建会话对象时,首先要确定系统是否加载了配置。如果没有sessionFactory,您需要首先创建对象。创建的会话对象需要保存在threadLocal中,以供该访问线程的下一次调用。

要关闭Session对象,只需要从当前线程获取Session对象,关闭对象并清空本地线程变量。

公共静态void closeSession()抛出HibernateException {

Session Session=(Session)thread local . get();

thread local . set(null);

如果(会话!=null) {

session . close();

}

}

关于Java Hibernate使用SessionFactory创建Session的案例的详细说明,本文到此结束。有关Java使用SessionFactory创建会话的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: