gpt4 book ai didi

java - 连接到不同服务器中的多个数据库

转载 作者:行者123 更新时间:2023-12-01 19:50:18 25 4
gpt4 key购买 nike

也许以前有人问过这个问题,但我还没有找到。

我的问题很简单,我想验证与很多数据库的连接。我在 Java 中创建了一个进程(我正在使用 Spring),该进程创建与从查询获取的一些数据的数据源连接。我只是想知道是否有更好的方法或更快的方法来做到这一点。我的流程需要花费大量时间来验证整个连接(接近 ​​5K)。

这就是我的代码的样子

public void validateConnections() throws IllegalBlockSizeException, BadPaddingException {
BasicDataSource dataSource;

List<Element> elements = dataToCreateDatasourcesRepository.getAllDatas();

for(Element element : elements) {
dataSource = new BasicDataSource();
dataSource.setDriverClassName(Constants.DRIVER_CLASS_NAME_PROP);
dataSource.setUrl(getConnectionUrl(element.getElementNbr(), element.getCode()));
dataSource.setUsername(userName);
dataSource.setPassword(EncryptionAlgorithm.decryptFromHex(password));
try {
Connection conn = dataSource.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
if(rs == null || !rs.next()) {
LOG
.info(
"Connection for element [" + element.getElementNbr() + "]." + element.getCode() + " UNSUCCESSFULY ");
}
else {
LOG.info("Connection for element [" + element.getElementNbr() + "]." + element.getCode() + " SUCCESSFULY ");
}
}
catch(Exception e) {
LOG.info("Connection for element [" + element.getElementNbr() + "]." + element.getCode() + " UNSUCCESSFULY ");
LOG.error(e);
}
}
}

public String getConnectionUrl(String elementNbr, String code) {
return String
.format(
dbUrl,
PREFIX.concat(elementNbr.toString()),
code.concat(Constants.HOSTNAME),
PREFIX.concat(elementNbr.toString()),
code.toLowerCase());
}

最佳答案

建立连接是 expensive operation ,这在服务器端需要花费大量时间。您正在运行一个循环,它很可能保持空闲状态等待下一个连接。您可以尝试使用thread pool executor并行发送多个连接。

顺便说一句,您可能还想使用 try-with-resources语句自动关闭结果集、语句和连接。

关于java - 连接到不同服务器中的多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59092332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com