このメソッドを使用してリクエストをクラスにルーティングする REST サービス アーキテクチャがあります。このメソッドは、データベース接続を開き、値をクエリして、最後にデータベース接続を閉じます。その後、データベースの値から JSON が構築され、REST 経由で返されます。
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 接続プーリングを使用する予定です。これは、使用頻度の低い接続をリサイクルするのに十分ですか?