首页>代码>java servlet+hibernate通过Ajax实现的简单成绩查询项目实例>/成绩查询/scoreSearch/src/com/hfm/util/HibernateSessionFactory.java
package com.hfm.util; 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 = "/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; static { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err .println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } 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; } }
最近下载更多
huaua7676 LV30
2021年7月20日
阳止初四 LV8
2021年6月6日
MIAOHUA LV6
2021年2月27日
network_sec LV6
2020年11月14日
j45254fdad LV1
2020年9月8日
xiaochen873 LV8
2020年7月27日
2109716825 LV1
2020年6月5日
1355862436 LV9
2020年5月12日
jaonsang LV25
2020年2月25日
alphastar LV6
2020年1月10日
最近浏览更多
sunrandong LV4
4月29日
vilychan LV2
2023年9月11日
liang85 LV1
2023年6月30日
gwl18289332687
2023年1月14日
暂无贡献等级
kman404 LV1
2022年11月23日
周敏国 LV9
2022年10月31日
微信网友_6186189978783744
2022年10月22日
暂无贡献等级
微信网友_6040315240812544 LV8
2022年10月20日
憨豆先生 LV2
2022年5月12日
吸一口月光
2021年12月15日
暂无贡献等级