`
zwm
  • 浏览: 282014 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
阅读更多
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::writing_hand_selector:走码观花-端木羽晨的个人博客

    【solo-blog:走码观花 - 端木羽晨的个人博客】 "走码观花",这个名字充满了诗意,暗示着博主端木羽晨在编程世界中的探索与感悟,就如同赏花般欣赏代码之美。他的个人博客 "solo-blog" 是一个展示其IT技能、分享...

    解读清明节文化密码 清明节的传统文化.doc

    与此同时,清明节也是一次春游踏青的绝佳时机,人们踏出户外,赏花观草,沐浴春光,享受大自然的美丽和宁静。这既是对生命活力的一种赞颂,也是对先辈所留下的自然环境的尊重。 最后,从传统习俗的角度来解读,清明...

    Mobx-Chinese-Interpretation:mobx原始码解析,随附v5中文原始码注释版本,一文搞懂mobx原理-源码解析

    看原始码是前端进阶的必走之路,首先能知道其中的原理,在写业务代码时能驾轻就熟,并且能扩展出更高阶的功能;其次明白原理后能帮助您快速排障以及避免bug的出现;最后解读原始码元能量学习到优秀的编程范式,使...

    萝卜影视APP源码麻花金色UI最新原生版APP

    *APP环境:Android Studio,纯Java原生开发。 后端环境:PHP7.2+MySQL 5.6.49L+Nginx 1.18.0+sg11 账户密码:后端后台/admin.php,后台账户:admin,后台密码:admin123456

    初一政史地让生命之花绽放学习教案.pptx

    这份名为“初一政史地让生命之花绽放学习教案”的资料,便是这样的一盏灯塔,它通过跨学科的知识整合,为初一学生打造了一堂关于生命价值主题的综合课程。该课程不仅仅是学科知识的堆砌,更是情感、态度、价值观的...

    消防安全开学第一课观后感感想_3.docx

    在全国各地的学校里,消防安全教育活动正逐步成为开学第一课的标配。这一活动的开展,体现了国家和社会对消防安全的重视,也是对青少年健康成长环境的构建。《消防安全开学第一课》不仅教育学生们正确认识火灾带来的...

    辽宁省大连市7七年级政治上册《3.3 让生命之花绽放(1)》教学设计 新人教版.doc

    《3.3 让生命之花绽放(1)》作为新人教版政治教材的一部分,旨在塑造学生的综合素养,通过提升知识与能力、过程与方法、情感态度与价值观,达到全面发展的教育目的。在教学中,学生首先需要理解生命的独特性和不可...

    最后一战全套手游源码

    这是前暴雪文案运营的世界观杰作,由日韩专业团队打造,新加坡团队精心打造! 《最后的一战》是一场超高速的对决,为战争和默契的团队合作,带给你无尽的快乐。在传统的moba游戏中,融合了许多创新的玩法,同时吸收...

    最后一战OL手游 全套完整源码+资源,测试可运行,禁止商用

    最后一战OL》是国内首款原创精品MOBA手游,是一款由前暴雪文案亲自操刀世界观,日韩专业团队打造美术场景,新加坡团队精心制作战斗音乐的旷世之作!' e9 H' Q* w: Z5 r 《最后一战OL》超快速的匹配对战、默契的团队...

    江苏学堂: 课程重点 课后作业 看图写话第41-60课.pdf

    50. 猴山观猴:通过观察猴子的行为,孩子们可以学习到动物的行为习性,提高观察和描述能力。 51. 我是近视眼:这节课关注视力健康,教导孩子们正确使用眼睛,预防近视。 52. 试卷发下来以后:这节课围绕学习压力和...

    湖北省松滋市实验七年级政治上册 3.2 让生命之花绽放(第一课时)教学设计 新人教版.doc

    而对于“情感、态度与价值观目标”,这堂课旨在帮助学生树立珍爱生命的价值观。通过教育,学生们将学会在面对困难时,如何展现出坚韧不拔的意志,并永远不放弃生存的希望。 教学的重点在于强化学生对于生命价值的...

    赠出国留学生赠言-期盼勉励版.doc

    7. **人际关系与道德观**:“心头有德前程远,眼底无私后路宽”提倡道德品质的重要性,无私与诚信会带来长远的好处。 8. **适应与成长**:“杨柳长得很快,而且很高;但是越长得高,越垂得低。千万条陌头细柳,条条...

    2014届高考生物一轮复习 课时作业 3-3 基因的表达 新人教版必修2

    5. **基因表达调控**:基因表达受到多种因素影响,包括DNA序列、转录因子、表观遗传修饰等。题目中的绣球花花色变化就是环境pH值对基因表达的影响,而不是对基因本身的改变。 6. **RNA聚合酶与DNA聚合酶**:DNA聚合...

    泼墨花草个人求职自荐信自我简介自我鉴定个人简历可编辑p.pdf

    10. **自我评价**:用一段话总结你的个人特点、职业目标和价值观,让雇主了解你的职业定位和自我认知。 11. **联系方式**:确保提供最新的联系方式,如手机号码、电子邮件地址,以及可选的个人主页和社交平台账号,...

    天启_宁波南苑东钱湖四季苑项目前期策略提案_90PPT.pptx

    这些项目各有特色,如香颂湾、东湖观邸、卡纳湖谷等,反映了宁波别墅市场的多级发展态势,这要求宁波南苑东钱湖四季苑项目必须有独特的定位和高品质的规划,以在激烈的市场竞争中脱颖而出。 综上所述,宁波南苑东钱...

    小学三年级-小学三年级我来编童话作文国王七篇.docx

    通过对文档中几篇童话故事的分析可以看出,它们都在试图传达一些积极的价值观和社会道德,如正义、勇敢、诚实等。通过这些故事,可以帮助孩子们树立正确的价值观,培养良好的品德。 综上所述,虽然文档本身并未直接...

    2022校园安全防范演讲稿.docx

    2. **行走于人行道**:尽量避免走在马路中央,选择人行道行走可以减少与机动车的接触。 3. **年龄限制与骑行安全**:未达到法定年龄的小学生不应单独骑行上街,且骑行时不得搭载他人,避免高速骑行。 ### 三、活动...

    成都某别墅小区智能化系统设计方案.doc

    该小区总建筑面积达到8.986万平方米,包含46栋多层住宅以及生活会所、网球场、游泳池和观景花园等公共设施。 【主要知识点】: 1. **智能化系统建设原则**: - 先进性:遵循高标准,采用新技术、新工艺和新产品,...

Global site tag (gtag.js) - Google Analytics