Manipulação de bancos de dados (urgente)

Olá pessoal…tudo bom?

Sou iniciante em desenvolvimento web. Estou utilizando Hibernate para conexão, manipulação do banco de dados de um sistema.
No sistema terá um banco de dados específico para cada empresa que utilizar o sistema.

Preciso de ajuda para fazer o seguinte:

Existe um banco de dados do sistema (como se fosse o banco principal, o primeiro a ser manipulado quando a pagina do sistema é aberta),
quando o usuário faz seu login na página preciso que o sistema reconheça de qual empresa esse usuário é e dessa forma fazer com que o sistema
passe a manipular o banco de dados específico da empresa desse usuário. como posso fazer isso? alguém tem uma idéia?

Se puderem me dar uma ajuda, ficaria muito grato.
De qualquer forma, valeu pessoal!

pq no login vc não coloca um combo com o nome das empresas e apartir daí seu Gerenciador de Persistencia vai ser criado de acordo com esta empresa selecionada.

cria um Factory e dependendo da empresa ela te retorna um Objeto de persistencia de acordo com o banco passado. entendeu?

Como os dados de autenticação são únicos (devem ser, ao menos), basta que você mantenha uma tabela relacionando o nome do banco de dados com os login da empresa em questão.

vou tentar fazer um esboço mais ou menos como ficaria no código

  1. utilize dois padrões de projeto para fazer isso (Singleton e Factory)

  2. Ajustando as conexões
    ex. Empresa 1 - usa Oracle
    ex. Empresa 2 - usa Mysql
    ex. Empresa 3 - usa JavaDB

  3. Conexao Oracle (Usando Singleton)


public class ConexaoOracle {
	
	private static Connection connection;
	
	private ConexaoOracle() throws Exception {
		 Class.forName("oracle");
	}
	
	public static Connection getInstance() throws Exception {
		if (connection == null) {
			connection = DriverManager.getConnection("oracle");
		}
		
		return connection; 
	}
	
	public void setConnection(Connection connection) {
		this.connection = connection;
	}
	
}
  1. Conexao Mysql (Usando Singleton)
public class ConexaoMySQL{
	
	private static Connection connection;
	
	private ConexaoMySQL() throws Exception {
		 Class.forName("mysql");
	}
	
	public static Connection getInstance() throws Exception {
		if (connection == null) {
			connection = DriverManager.getConnection("mysql");
		}
		
		return connection; 
	}
	
	public void setConnection(Connection connection) {
		this.connection = connection;
	}
	
}
  1. Conexao JavaDB (Usando JavaDB)
public class ConexaoJavaDB {
	
	private static Connection connection;
	
	private ConexaoJavaDB() throws Exception {
		 Class.forName("JavaDB");
	}
	
	public static Connection getInstance() throws Exception {
		if (connection == null) {
			connection = DriverManager.getConnection("JavaDB");
		}
		
		return connection; 
	}
	
	public void setConnection(Connection connection) {
		this.connection = connection;
	}
	
}
  1. Aplicando o Factory
public class GerarConexaoFactory {
	
    public static ConexaoEmpresa getConexao( String empresa ) {  
        if( empresa == "Empresa 1" ) return new ConexaoEmpresa1();
        else if( empresa == "Empresa 2" ) return new ConexaoEmpresa2();
        else if( empresa == "Empresa 3" ) return new ConexaoEmpresa3();
        else return null;  
    }  

}
  1. Classe abstrata da Conexao
public abstract class ConexaoEmpresa {
	
}
  1. Classe Conexao para cada empresa chamado a Conexao Configurada

public class ConexaoEmpresa1 extends ConexaoEmpresa {

	public static Connection ConexaoEmpresa() throws Exception {
		return ConexaoOracle.getInstance();
	}

}

public class ConexaoEmpresa2 extends ConexaoEmpresa {

	public static Connection ConexaoEmpresa() throws Exception {
		return ConexaoMySQL.getInstance();
	}

}

public class ConexaoEmpresa3 extends ConexaoEmpresa {

	public static Connection ConexaoEmpresa() throws Exception {
		return ConexaoJavaDB.getInstance();
	}

}

basicamente faria assim

Abraço

Pessoal…primeiramente, obrigado pela atenção ao tópico que postei.
Entendi a idéia de vocês, vou tentar fazer a implementação aqui e assim que tiver resultado eu volto a postar algo aqui.
Mas acho que desse modo que vocês falaram dará certo sim…é bem isso que nós precisamos aqui…

OBRIGADO!