JDBC ドライバーを使用するコードを実装しています。
以下は私が作ったコードです。
public class MysqlUtils {
public Connection conn;
public ResultSet rs;
public PreparedStatement stmt;
public MysqlUtils(String address, String id, String passwd) {
try {
conn = DriverManager.getConnection(address, id, passwd);
stmt = null;
rs = null;
} catch (SQLException e) {
// error management
}
}
public void getSomeData(long id) {
try {
stmt = conn.prepareStatement("SELECT * FROM some_table");
rs = stmt.executeQuery();
rs.next();
System.out.println(rs.getString("some_column");
} catch (SQLException e) {
// error management
}
}
}
Connection conn、ResultSet rs、PreparedStatement stmt をメンバー変数として宣言しました。パフォーマンスを向上させるのに役立つかもしれないと考えたからです。
いくつか質問があります。
getSomeData() を連続して呼び出すと、毎回 stmt と rs に新しいオブジェクトが割り当てられますか?
上記の質問への回答に関係なく、このコードをマルチスレッド環境 (MysqlUtils クラスを使用する複数のスレッド) で実行すると、getSomeData() で ResultSet rs を宣言していないため、混乱が生じますか?
メンバー変数として Connection conn、ResultSet rs、PreparedStatement stmt を宣言するのは悪い選択でしたか? 言い換えれば、JDBC の私の実装は実行可能なものですか?
助けてくれてありがとう。