Не знаю что за код в L2DatabaseFactory. На каждую базу данный свой pool. Метод getInstance в таком случае будет принимать параметр - какую БД использовать
Свернуть ↑
Код:
enum Database {
MAIN, SECODARY, ....
};
class DatabaseManager
{
private static DatabaseManager[] instances; // можно и map, но тут массив к месту
static DatabaseManager getInstance() { return getInstance(Database.MAIN); }
static DatabaseManager getInstance(Database db) { return instances[db.ordinal()]; }
// инициализация сервиса
static void init() {
instances = new DatabaseManager[Database.values().length()];
for(Database db : Database.values() {
// для удобства настройки множества бд использовать свойства с заданным именем
String prefix = "database."+db.name().toLower();
String dbURL = Config.getProperty(prefix + ".url");
String dbUser = Config.getProperty(prefix + ".user");
String dbPass = Config.getProperty(prefix + ".pass");
DatabaseManager factory = new DatabaseManager(dbURL, dbUser, dbPass);
factory.connect();
instances[db.ordinal()] = factory;
}
}
private DatabaseManager(String url, String user, String password) { чтото тут }
private void connect() { создать и настроить conn pool }
public Connection getConnection();
}
Свернуть ↑Развернуть ↓