0
我有一个REST服务体系结构,通过此方法将请求路由到类。此方法打开数据库连接,查询值并最终关闭数据库连接。之后,从数据库值构建JSON并通过REST返回。这是通过jdbc连接和断开连接到mysql的安全方式吗?
public HashMap<Integer, Artifact> queryDBValues(String userNo) {
DAO dao = getDAO(DB1);
Connection connection = dao.instantiateConnection();
ResultSet resultSet = null;
Statement statement = null;
HashMap<Integer, Artifact> artifacts = new HashMap<Integer, Artifact>();
try {
statement = connection.createStatement();
String stmntStr = "select * from myTable";
resultSet = statement.executeQuery(stmntStr);
int i = 0;
while (resultSet.next()) {
Artifact artifact = new Artifact();
artifact.setArtifactId(resultSet.getString("id"));
artifacts.put(i, artifact);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
dao.closeSQLComponents(resultSet, connection);
}
return artifacts;
}
DAO是一个基于getDAO()中传递的值实例化的抽象类。我这样做是因为我连接到多个数据库,并且从扩展此类的类连接和断开连接。
我连接其之后接收到来自MySQL数据库的错误状态:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:数据源被拒绝建立连接的,消息服务器从:“太多的连接”
的连接终于关闭了。从长远来看,我打算使用c3p0连接池。这足以满足现在低利用率的连接吗?
很高兴我在打字前扫描了答案,你从我口中取出了这些单词。请关闭与您打开它们的代码块相同的项目。隐藏DAO方法中的闭包很奇怪,有一个DAO并且不在DAO中打开它们是_even odder_。选择使用DAO还是不要,但不要使用一个。我投票赞成将公开转入DAO。 –