-2
class StudentDAO extends AbstractDAO <Integer, Student> {
private static final String SQL_SELECT_ALL_STUDENT = "SELECT ID, FIRST_NAME, SECOND_NAME, BIRTH_DATE,ENTER_YEAR FROM STUDENT";
private static final String SQL_SELECT_STUDENT_BY_ID = "SELECT FIRST_NAME, SECOND_NAME, BIRTH_DATE,ENTER_YEAR FROM STUDENT WHERE ID=?";
private static final String SQL_SELECT_STUDENT_BY_LASTNAME ="SELECT id,FIRST_NAME,BIRTH_DATE,ENTER_YEAR FROM. STUDENT WHERE SECOND_NAME=?";
private static final String SQL_DELETE_STUDENT_BY_ID = "DELETE FROM STUDENT WHERE ID =?";
private static final String SQL_INSERT_STUDENT = "INSERT INTO STUDENT"+"(FIRST_NAME, SECOND_NAME, BIRTH_DATE, ENTER_YEAR)"+"VALUES (?,?,?,?)";
private PreparedStatement preparedStatement1;
private PreparedStatement preparedStatementSelectById;
private PreparedStatement preparedStatementfindAll;
private PreparedStatement preparedStatementDeleteStudentById;
private PreparedStatement preparedStatementInsertStudent;
public StudentDAO(Connection connection) throws DAOException, SQLException {
super(connection);
try {
preparedStatementInsertStudent =connection.prepareStatement(SQL_INSERT_STUDENT);
preparedStatement1 = connection.prepareStatement(SQL_SELECT_STUDENT_BY_LASTNAME);
preparedStatementfindAll = connection.prepareStatement(SQL_SELECT_ALL_STUDENT);
preparedStatementDeleteStudentById = connection.prepareStatement(SQL_DELETE_STUDENT_BY_ID);
preparedStatementSelectById = connection.prepareStatement(SQL_SELECT_STUDENT_BY_ID);
} catch (Exception e) {
throw new DAOException(e);
}
}
コードサンプルが高くなると、クラスのデザイナで使用する場合にpsを閉じる方法が難しくなりました。クラスのコンストラクタでPrepareStatemenを閉じる
しかし、この場合は、PSの繰り返しメソッドコールの場合、接続プールを使用する場合は、ドキュメントと矛盾する「作成して何回も使用する」という原則に反して作成されます。 – Evgeni
は問題ありません。 dbがステートメントを再度コンパイルする必要はないという主な目標。 たとえば、apache dsの場合 http://commons.apache.org/proper/commons-dbcp/configuration.html 「poolPreparedStatements」を探します。 – magulla