我有一个类名称DBManager.java,该类实现了单例设计模式,该模式用于所有DB操作。 当我必须连接1个数据源时,这非常有效。现在,在我的项目中,我必须连接2个不同的数据源,现在,当我使用此类时,它的行为有所不同。因为它总是返回1个数据源连接。
现在我该如何更好地管理这一问题?一种方法是,我将创建另一个DBManager2.java类,并将该类用于第二个数据源,但是我认为这不是一个好方法。
任何推荐。
答案 0 :(得分:1)
使用Map<Key, DataSource>
通过某些键存储数据源。然后使用一些关键对象获取相应的数据源(数据库URL,数据库用户或某些标识符)
答案 1 :(得分:0)
一种方法是使用不同的数据库将enum
创建为不同的枚举常量:
public enum Databases{
DB1,
DB2
}
然后在您的DBManager.getConnection()
方法中使用它:
public final class DBManager{
// singleton stuff
public Connection getConnection(Databases d){
switch(d){
case DB1:
// return connection to db1
case DB2:
// return connection to db2
}
}
}
通过使用开关,您可以为每个数据库创建一个新分支。
另一种方法是将连接所需的所有信息存储在枚举本身中。尽管那样会存在很多安全漏洞,因为您只是将数据库凭据硬编码到代码中(不应该这样做)。