SAAS化,hibernate session 管理

本文深入剖析了为何在软件开发领域,大多数程序员未能晋升为架构师的原因,通过详细解析架构师所需技能、职责与普通开发者之间的差异,帮助读者理解并提升自己成为优秀架构师的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-----------------------------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名

转载于:https://my.oschina.net/lus/blog/117740

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值