您的位置:首页 > 其它

SAAS化,hibernate session 管理

2013-03-26 00:00 471 查看
-----------------------------TenantMasterFactory.java---------------------------

package com.nen.cn.util;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

import org.hibernate.*;
import org.hibernate.cfg.Configuration;

@SuppressWarnings("static-access")
public class TenantMasterFactory{

private static Map<String, SessionFactory> sessionmapdfactory = new HashMap<String, SessionFactory>();
private static Map<String, Session> sessionmap = new HashMap<String, Session>();
private static Configuration cfg = null;
private static Properties pps = null;

TenantMasterFactory() {
}

/**
* new sessionFactorys for the Tenants
*/
static {
pps = new Getproperties().getProperties("src/TenantManagerFile.properties");
try {
for (Iterator iter = pps.keySet().iterator(); iter.hasNext();) {
String element = (String) iter.next();
SessionFactory sessionFactory = Configuartion(pps.getProperty(String.valueOf(element)).trim());
sessionmapdfactory.put(String.valueOf(element), sessionFactory);
}
}catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}

private static SessionFactory Configuartion(String catalog){
cfg = new Configuration();
cfg.configure("/"+ catalog +"hibernate.cfg.xml");
return cfg.buildSessionFactory();
}

public Session getSession(String catalog) {
Session session = sessionmap.get(catalog);
if( session == null || !session.isOpen()){
if(sessionmapdfactory.get(catalog) == null || sessionmapdfactory.get(catalog).isClosed()){
SessionFactory sessionFactory = Configuartion(catalog);
sessionmapdfactory.put(catalog, sessionFactory);
}
session = sessionmapdfactory.get(catalog).openSession();
sessionmap.put(catalog, session);
}
System.out.println(sessionmapdfactory.get(catalog));
return session;
}
}

------------------------------Getproperties .java------------------------

package com.nen.cn.util;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;

public class Getproperties {

private static Properties pps = null;

public static Properties getProperties(String fileName) {
pps = new Properties();
try {
FileInputStream ss = new FileInputStream(fileName);
if(ss != null){
pps.load((InputStream) ss);
}
ss.close();
} catch (Exception e) {
System.out.println("The file loader error....");
}
return pps;
}

}

---------------------------TenantManagerFile.properties)---------------------------

1=WIS1
2=WIS2
3=WIS3
4=WIS4
5=WIS5
6=WIS6
7=WIS7
8=WIS8
9=WIS9
10=WIS10

--------------------------------------------------------------------------------------------------

Session session = dao.getSession(catalog);

catalog = TenantManagerFile.properties 前置项

TenantManagerFile.properties 后置项 = 数据库database名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SAAS hibernate session