package org.zwm;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
/**
* Configures and provides access to Hibernate sessions, tied to the
* current thread of execution. Follows the Thread Local Session
* pattern, see {@link http://hibernate.org/42.html }.
*/
public class HibernateSessionFactory {
/**
* Location of hibernate.cfg.xml file.
* Location should be on the classpath as Hibernate uses
* #resourceAsStream style lookup for its configuration file.
* The default classpath location of the hibernate config file is
* in the default package. Use #setConfigFile() to update
* the location of the configuration file for the current session.
*/
private static String CONFIG_FILE_LOCATION = "/org/zwm/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
private HibernateSessionFactory() {
}
/**
* Returns the ThreadLocal Session instance. Lazy initialize
* the <code>SessionFactory</code> if needed.
*
* @return Session
* @throws HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
/**
* Rebuild hibernate session factory
*
*/
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
/**
* Close the single hibernate session instance.
*
* @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
/**
* return session factory
*
*/
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* return session factory
*
* session factory will be rebuilded in the next call
*/
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
/**
* return hibernate configuration
*
*/
public static Configuration getConfiguration() {
return configuration;
}
}
分享到:
相关推荐
【solo-blog:走码观花 - 端木羽晨的个人博客】 "走码观花",这个名字充满了诗意,暗示着博主端木羽晨在编程世界中的探索与感悟,就如同赏花般欣赏代码之美。他的个人博客 "solo-blog" 是一个展示其IT技能、分享...
看原始码是前端进阶的必走之路,首先能知道其中的原理,在写业务代码时能驾轻就熟,并且能扩展出更高阶的功能;其次明白原理后能帮助您快速排障以及避免bug的出现;最后解读原始码元能量学习到优秀的编程范式,使...
*APP环境:Android Studio,纯Java原生开发。 后端环境:PHP7.2+MySQL 5.6.49L+Nginx 1.18.0+sg11 账户密码:后端后台/admin.php,后台账户:admin,后台密码:admin123456
【标题】和【描述】提及的是河北中小学校园内的消防安全公开课的观后感心得文档,文档包含了多篇文章,总结了学生们对于消防安全教育的理解和感悟。【标签】为空,没有提供额外信息。【部分内容】摘录了三篇观后感的...
如案例中提到的石码“卖气球的小女孩”的家庭,火灾瞬间摧毁了幸福的生活,造成了不可逆的伤害。 - 火灾往往发生在人们毫无防备之时,如午休或深夜,因此提高防火意识至关重要。 2. **火灾预防** - 不得损坏或...
【消防安全开学第一课】是针对学生们进行的一次重要的教育活动,旨在提高学生的消防安全意识和应对火灾的能力。通过观看这样的课程,学生们能了解到火灾的严重性,认识到预防火灾的重要性。以下是根据文档内容提炼出...
【消防安全教育】是重要的社会活动,旨在提高公众的消防安全意识,减少火灾事故的发生。每年的11月9日被定为全国消防日,这日期与火警电话号码119相吻合,既是对消防工作的提醒,也是对火警报警服务的推广。...
《3.3 让生命之花绽放(1)》是一节针对七年级学生的政治课程,主要探讨了珍爱生命和面对困难时永不放弃的主题。这节课以培养学生的知识与能力、过程与方法以及情感态度价值观为核心目标。 在知识与能力层面,学生...
这是前暴雪文案运营的世界观杰作,由日韩专业团队打造,新加坡团队精心打造! 《最后的一战》是一场超高速的对决,为战争和默契的团队合作,带给你无尽的快乐。在传统的moba游戏中,融合了许多创新的玩法,同时吸收...
最后一战OL》是国内首款原创精品MOBA手游,是一款由前暴雪文案亲自操刀世界观,日韩专业团队打造美术场景,新加坡团队精心制作战斗音乐的旷世之作!' e9 H' Q* w: Z5 r 《最后一战OL》超快速的匹配对战、默契的团队...
50. 猴山观猴:通过观察猴子的行为,孩子们可以学习到动物的行为习性,提高观察和描述能力。 51. 我是近视眼:这节课关注视力健康,教导孩子们正确使用眼睛,预防近视。 52. 试卷发下来以后:这节课围绕学习压力和...
7. **人际关系与道德观**:“心头有德前程远,眼底无私后路宽”提倡道德品质的重要性,无私与诚信会带来长远的好处。 8. **适应与成长**:“杨柳长得很快,而且很高;但是越长得高,越垂得低。千万条陌头细柳,条条...
5. **基因表达调控**:基因表达受到多种因素影响,包括DNA序列、转录因子、表观遗传修饰等。题目中的绣球花花色变化就是环境pH值对基因表达的影响,而不是对基因本身的改变。 6. **RNA聚合酶与DNA聚合酶**:DNA聚合...
10. **自我评价**:用一段话总结你的个人特点、职业目标和价值观,让雇主了解你的职业定位和自我认知。 11. **联系方式**:确保提供最新的联系方式,如手机号码、电子邮件地址,以及可选的个人主页和社交平台账号,...
这些项目各有特色,如香颂湾、东湖观邸、卡纳湖谷等,反映了宁波别墅市场的多级发展态势,这要求宁波南苑东钱湖四季苑项目必须有独特的定位和高品质的规划,以在激烈的市场竞争中脱颖而出。 综上所述,宁波南苑东钱...
通过对文档中几篇童话故事的分析可以看出,它们都在试图传达一些积极的价值观和社会道德,如正义、勇敢、诚实等。通过这些故事,可以帮助孩子们树立正确的价值观,培养良好的品德。 综上所述,虽然文档本身并未直接...
2. **行走于人行道**:尽量避免走在马路中央,选择人行道行走可以减少与机动车的接触。 3. **年龄限制与骑行安全**:未达到法定年龄的小学生不应单独骑行上街,且骑行时不得搭载他人,避免高速骑行。 ### 三、活动...
13-16题则围绕最初计划、电影类型偏好、对动作电影的看法以及可能的观影伙伴展开。 这些题目旨在考察学生的听力理解,包括对对话情境的理解、关键信息的捕捉以及推理判断的能力。在实际的英语学习中,提升这方面...