Boa tarde senhores!
Em um de meus projetos, tenho uma classe ConnectionFactory com apenas um método, o getConnection().
Meu banco de dados possui umas 10 base de dados (schemas) diferentes, portanto, as vezes será preciso eu alterar a URL que a classe utilizará para criar a conexão, pois será utilizado um banco de dados diferente. Além disso, o usuário pode acessar simultaneamente, schemas diferentes, ou seja, teria que ter duas ou mais conexões abertas e diferentes ao mesmo tempo.
Para fazer isso, qual seria uma boa prática de implementação?
[list]Alterar meu método getConnection para getConnection(String URL)[/list]
[list]Implementar um método setDatabase(String URL) e após isso, chamar o getConnection normalmente[/list]
[list]Outro?[/list]
Outra coisa importante, quanto ao usuário e senha, o melhor seria eu informar isso enviando um argumento? Daí seria algo como getConnection(String URL, String user, String password).
Abaixo minha classe de conexão, na verdade eu já sei como implementar de modo que atenda as minhas necessidades, porém não sei se isso será fazer gambiarra, por isso a dúvida, pois todo lugar que vejo, o método getConnection() de uma ConnectionFactory não recebe parâmetros.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
public static java.sql.Connection getConnection() {
Connection connection = null;
try {
/* Obtém o driver de conexão com o banco de dados */
Class.forName("com.mysql.jdbc.Driver");
/* Configura os parâmetros da conexão */
String url = "jdbc:mysql:ip:porta/schema";
String username = usuario;
String password = senha;
/* Tenta se conectar */
connection = DriverManager.getConnection(url, username, password);
/* Caso a conexão ocorra com sucesso, a conexão é retornada */
return connection;
} catch (ClassNotFoundException e) {
System.out.println("O driver expecificado nao foi encontrado.");
return null;
} catch (SQLException e) {
System.out.println("Nao foi possivel conectar ao banco de dados.");
return null;
}
}
}