本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。