テンプレートモード、ポリシーモード等からのJDBCコードの最適化

1216 ワード

一、テンプレートモードを使用して最適化する
テンプレート・モードを使用するには、主にオブジェクト向けの継承フィーチャーを使用します.すなわち、コードが変わらない部分をスーパー・クラスに配置し、変化する部分をサブクラスに配置します.具体的には、クエリー・オペレーションの最適化、変化と変わらない部分の区別:1、sql、ResultSetの処理は変化部分であり、リソースの作成と解放部分は変わらない部分です.2、スーパークラスを抽出し、不変の部分をスーパークラスに入れ、変化した部分をサブクラス実現(抽象的な方法と書くことができる)に残してスーパークラスを実現するコードは以下の通りである.
public Object find(String sql, Object[] args) {
      …
      rs = ps.executeQuery();
      if (rs.next()) return rowMapper(rs); 
      …
    }
    protected abstract Object rowMapper(ResultSet rs);


二、使用策略モードの最適化
テンプレートモードとの主な違いは、変更された部分が書き換え方法ではなくインタフェースで実現されることです.1、クエリー操作を最適化し、変化と不変の部分を区別する:sqlとResultSetの処理は変化の部分であり、リソースの作成と解放の部分は不変の部分である.2.インタフェースパッケージの変化部分を抽出する.3、主な操作コードは以下の通りである.
public Object find(String sql, Object[] args, RowMapper rowMapper) {
        …
        rs = ps.executeQuery();
        if (rs.next())return rowMapper.mapRow(rs);
        …
    }
//     
public interface RowMapper {
        public Object mapRow(ResultSet rs) throws SQLException;
    }

findメソッドを呼び出すときに匿名クラスでインタフェースを実装する方法:
find(sql, args, new RowMapper(){
  public Object mapRow(ResultSet rs) throws SQLException {
  //              
} 
});