少し助言が必要です。私はDataSourceを終了する必要がありますが、FluentJdbcは一度DataSourceを取得すると、私はそれを閉じるための方法がないようです。理想的には、私はtry()ブロックにDataSourceをラップするのが大好きですが、その場合は接続プールが開かれ、すぐに閉じられます。Jdbcクラスにデータソースが提供されている場合は閉じる
ハッシュ内にDataSourceを格納する方法もありますが、少しオーバーヘッドに見えます。私ができる
public class FluentJdbcFactory {
private final static Logger logger = LoggerFactory.getLogger("Defrauder");
private final static Map<String, FluentJdbc> instances = new HashMap<>();
private static Properties get(String propertiesName) {
try (InputStream in = FluentJdbcFactory.class.getClassLoader().getResourceAsStream(propertiesName)) {
Properties p = new Properties();
p.load(in);
return p;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static FluentJdbc getInstance(String propertiesName) {
if (!instances.containsKey(propertiesName)) {
HikariDataSource ds = DatasourceConfig.setup(get(propertiesName));
instances.put(propertiesName, new FluentJdbcBuilder()
.connectionProvider(ds)
.defaultSqlHandler(() -> FluentJdbcFactory::isCriticalSqlException)
.build());
}
return instances.get(propertiesName);
}
public static void close() {
instances.forEach((k,v)->v.NON_EXISTANT_CLOSE_METHOD);
}
}
何でもそう賢く:
私は複数の接続を保存するためのコードを次がありますか?