hibernate动态数据库进化版 (五)

2014-11-24 09:49:30 · 作者: · 浏览: 2
ession()
: 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("%%%% 重建临时会话工厂错误 %%%%");
e.printStackTrace();
}
}

public static void reflashSessionFactory(
DynamicHibernateConfiguration tempConfiguration) {
try {
// configuration.configure(configFile);

// hibernate配置相同的标志
boolean flag = false;
for (DynamicHibernateConfiguration config : configurationList) {
if (tempConfiguration.getProperty("hibernate.dialect").equals(config.getProperty("hibernate.dialect"))
&& tempConfiguration.getProperty("hibernate.connection.url").equalsIgnoreCase(config.getProperty("hibernate.connection.url"))
&& tempConfiguration.getProperty("hibernate.connection.username").equals(config.getProperty("hibernate.connection.username"))
&& tempConfiguration.getProperty("hibernate.connection.password").equals(config.getProperty("hibernate.connection.password"))) {
configuration = config;
sessionFactory = sessinFactoryMap.get(configuration.getProperty("hibernate.connection.url")+configuration.getProperty("hibernate.connection.username"));
flag = true;
break;
}
}
if (!flag){
closeSession();
closeSessionFactory();
configuration.reset();
configuration = tempConfiguration;
configurationList.add(configuration);
sessionFactory = configuration.buildSessionFactory();
sessinFactoryMap.put(configuration.getProperty("hibernate.connection.url")+configuration.getProperty("hibernate.connection.username"), sessionFactory);
// System.out.println("%%%% 会话工厂在这里重新开始 %%%%");
}
} catch (Exception e) {
System.err.println("%%%% 会话工厂重新开始错误 %%%%");
e.printStackTrace();
}
}

public static void closeSessionFactory() throws HibernateException {
try {
if (sessionFactory != null) {
sessionFactory.close();
}
} catch (Exception e) {
System.err.println("%%%% 会话工厂关闭错误 %%%%");
e.printStackTrace();
}
}

/**
* Close the single hibernate session instance.
*
* @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
t