Как лучше всего поместить инициализацию PreparedStatement, когда я хочу использовать ее для всех экземпляров данного класса?
Мое решение пока заключается в создании статических методов для открытия и закрытия, но я неЭто не совсем правильный выбор:
class Person {
protected static PreparedStatement stmt1;
protected static PreparedStatement stmt2;
protected static void initStatements(Connection conn) {
stmt1 = conn.PrepareStatement("select job_id from persons where person_id=:person_id");
stmt2 = conn.PrepareStatement("update persons set job_id=:job_id where person_id=:person_id");
}
protected static void closeStatements() {
stmt1.close();
stmt2.close();
}
public void increaseSalary() {
stmt1.execute(); // just a example
stmt2.execute();
}
}
void main {
// create prepared statements
Person.initStatements(conn);
// for each person, increase do some action which require sql connection
for (Person p : getAllPersons()) {
p.increaseSalary();
}
// close statements
Person.closeStatements();
}
Нет ли другого способа использовать PreparedStatements внутри нескольких экземпляров класса?