robbie.dao
クラス BaseDao

java.lang.Object
  拡張robbie.dao.BaseDao
すべての実装インタフェース:
java.io.Serializable
直系の既知のサブクラス:
SDao, XDao

public class BaseDao
extends java.lang.Object
implements java.io.Serializable

DAOのベースクラス。

このクラスにはpublicメソッドは実装されていません。 このクラスは必ず継承をしてから、利用する必要があります。
拡張の方法は、SDaoおよび、XDao、GeneralizedXDaoの実装を確認して下さい。

関連項目:
XDao, GeneralizedXDao, SDao, 直列化された形式

コンストラクタの概要
BaseDao()
           
 
メソッドの概要
protected  void bindParameters(java.sql.PreparedStatement sts, java.util.List params)
          PreparedStatemanetへMapListのパラメータをバインドしています。
protected  void closeConnection(java.sql.Connection conn)
          コネクションをクローズする。
protected  void closeQuery(java.sql.PreparedStatement sts, java.sql.ResultSet rs)
          検索処理を閉じます。
protected  void closeResultSet(java.sql.ResultSet rs)
          ResultSetインスタンスを閉じます。
protected  void closeStatement(java.sql.PreparedStatement sts)
          Statementインスタンスを閉じます。
protected  void commit(java.sql.Connection conn)
          コミットする。
protected  java.util.List executeQuery(java.sql.Connection conn, Query query)
          問い合わせを行い、結果をMapListで返します。
protected  java.lang.Object[][] executeQueryForArray(java.sql.Connection conn, Query query)
          問い合わせを行い、結果をObject[][]で返します。
protected  java.util.List executeQueryForBeans(java.sql.Connection conn, Query query)
          問い合わせを行い、結果をJavaBeansのListで返します。
protected  java.util.List executeQueryForDynaBean(java.sql.Connection conn, Query query)
          問い合わせを行い、結果をJavaBeansのListで返します。
protected  int executeUpdate(java.sql.Connection conn, Query query)
          更新を行います。
protected  boolean isClosed(java.sql.Connection conn)
          コネクションが開いているかどうかをチェックします。
protected  java.sql.ResultSet openQuery(java.sql.PreparedStatement sts, java.util.List params)
          検索を実行し、ResultSetを返します。
protected  java.sql.PreparedStatement openStatement(java.sql.Connection conn, java.lang.String sql)
          Statementインスタンスを返します。
protected  void rollback(java.sql.Connection conn)
          ロールバックする。
protected  void setAutoCommit(java.sql.Connection conn, boolean isAutoCommit)
          AutoCommitモードをセットします。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

BaseDao

public BaseDao()
メソッドの詳細

closeConnection

protected void closeConnection(java.sql.Connection conn)
                        throws java.sql.SQLException
コネクションをクローズする。

パラメータ:
conn - Connectionインスタンス
例外:
java.sql.SQLException

isClosed

protected boolean isClosed(java.sql.Connection conn)
                    throws java.sql.SQLException
コネクションが開いているかどうかをチェックします。

JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。

パラメータ:
conn - Connectionインスタンス
戻り値:
Connectionがオープンしていたらtrue
例外:
java.sql.SQLException

setAutoCommit

protected void setAutoCommit(java.sql.Connection conn,
                             boolean isAutoCommit)
                      throws java.sql.SQLException
AutoCommitモードをセットします。

JDBCの仕様では、Connectionを取得した際には、デフォルトでAutoCommitモードが trueになります。したがって、複雑なトランザクション処理を行ない、 ロールバック、コミットを多用する場合には、あらかじめオートコミットを falseに設定しておく必要があります。

また、JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。

パラメータ:
conn - Connectionインスタンス
isAutoCommit - 有効にする場合にはtrue
例外:
java.sql.SQLException

commit

protected void commit(java.sql.Connection conn)
               throws java.sql.SQLException
コミットする。

JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。

パラメータ:
conn - Connectionインスタンス
例外:
java.sql.SQLException

rollback

protected void rollback(java.sql.Connection conn)
                 throws java.sql.SQLException
ロールバックする。

JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。

パラメータ:
conn - Connectionインスタンス
例外:
java.sql.SQLException

executeQuery

protected java.util.List executeQuery(java.sql.Connection conn,
                                      Query query)
                               throws java.sql.SQLException
問い合わせを行い、結果をMapListで返します。

ResultSetとStatementのCloseは行いますが、コネクションのCloseを行いません。

 使用例:
 このメソッドを使用する場合には、サブクラスで以下のように、
 コネクションの取得とclose()を管理しながら、実装する
 必要があります。
 
 Connection conn = null;
 try {
     // 何らかの実装を使用して、オープンされた
     // Connecionオブジェクトを取得します。
     conn = resource.getConnection();
     
     // Queryのオブジェクトを渡して問合せを実行
     List result = executeQuery(conn, query):
     
     ...何らかの処理や別の問合せ
     
 } finally {
   // closeConnection()で必ずConnectionを閉じる。closeConnection()は
   // Connectionオブジェクトがnullであれば何もしない。
     closeConnection(conn);
 }
 
 

パラメータ:
conn - Connectionインスタンス
query - Queryオブジェクト
戻り値:
List MapのList
例外:
java.sql.SQLException
関連項目:
closeConnection(Connection)

executeQueryForArray

protected java.lang.Object[][] executeQueryForArray(java.sql.Connection conn,
                                                    Query query)
                                             throws java.sql.SQLException
問い合わせを行い、結果をObject[][]で返します。

Object[0][*]はカラム名のヘッダになります。 データだけ使用したい場合には、Object[1][*]から使用してください

パラメータ:
conn - Connectionインスタンス
query - Queryオブジェクト
戻り値:
検索結果の2次元配列
例外:
java.sql.SQLException
関連項目:
executeQuery(Connection, Query)

executeQueryForBeans

protected java.util.List executeQueryForBeans(java.sql.Connection conn,
                                              Query query)
                                       throws java.sql.SQLException
問い合わせを行い、結果をJavaBeansのListで返します。

パラメータ:
conn - Connectionインスタンス
query - Queryオブジェクト
戻り値:
検索結果のJavaBeansのList
例外:
java.sql.SQLException

executeQueryForDynaBean

protected java.util.List executeQueryForDynaBean(java.sql.Connection conn,
                                                 Query query)
                                          throws java.sql.SQLException
問い合わせを行い、結果をJavaBeansのListで返します。

パラメータ:
conn - Connectionインスタンス
query - Queryオブジェクト
戻り値:
検索結果のDynaBeanのList
例外:
java.sql.SQLException

executeUpdate

protected int executeUpdate(java.sql.Connection conn,
                            Query query)
                     throws java.sql.SQLException
更新を行います。

StatementのCloseは行いますが、コネクションのCloseは行いません。

 使用例:
 このメソッドを使用する場合には、サブクラスで以下のように、
 コネクションの取得とclose()を管理しながら、実装する
 必要があります。
 
 Connection conn = null;
 try {
     // 何らかの実装を使用して、オープンされた
     // Connecionオブジェクトを取得します。
     conn = ...
     
     // SQLのオブジェクトを渡して更新処理を実行
     int count = executeUpdate(conn, query):
     
     // 例として、更新が行なわれていたらtrue、
     // 1行も更新されていなければfalseを返す
     if(count > 0) {
         return true;
     }
     return false;
     
 } finally {
     // closeConnection()で必ずConnectionを閉じる。closeConnection()は
     // Connectionオブジェクトがnullであれば何もしない。
     closeConnection(conn);
 }
 
 
また、このクラスはStatementを閉じてしまうため、SQLは再利用できません。

バッチ処理のようにSQLを再利用するためには、サブクラスでopenStatement()や bindParameters()などのAPIを利用して再実装する必要があります。

パラメータ:
conn - Connectionインスタンス
query - Queryクラス
戻り値:
更新件数
例外:
java.sql.SQLException
関連項目:
closeConnection(Connection)

openStatement

protected java.sql.PreparedStatement openStatement(java.sql.Connection conn,
                                                   java.lang.String sql)
                                            throws java.sql.SQLException
Statementインスタンスを返します。

利用方法はopenQuery()の使用例を確認してください。

パラメータ:
conn - Connectionインスタンス
sql - SQL文字列
戻り値:
PreparedStatementオブジェクト
例外:
java.sql.SQLException
関連項目:
openQuery(PreparedStatement sts, List params)

openQuery

protected java.sql.ResultSet openQuery(java.sql.PreparedStatement sts,
                                       java.util.List params)
                                throws java.sql.SQLException
検索を実行し、ResultSetを返します。

executeQueryは、検索結果をMapListで返しますが、このメソッドでは、 既にopenされたStatementにバインド変数をセットして、ResultSetを 返します。

 使用例:
 このメソッドを使用する場合には、サブクラスで以下のように、
 PreparedStatement、ResultSet、Connectionの取得とclose()、
 およびSQLクラスを管理しながら、実装する必要があります。
 
 Connection conn = null;
 PreparedStatement statement = null;
 ResultSet reslut = null;
 try {
     // 何らかの実装を使用して、オープンされた
     // Connecionを取得します。
     conn = .....
     
     // QueryのオブジェクトからSQL文字列をバインド変数のMapListを
     // 取り出します。
     String sqlStr = query.getSQLString();
     List params = query.getBindParametersMapList();
     
     // StatementをOPENし、SQLを実行してResultSetを取得します。
     statement = openStatement(conn, sqlStr);
     result = openQuery(statement, params);
     
     // ResutlSetを使用して何かの処理を行ないます。
     
     ・・・・・
     
 } finally {
     // 必ずPreparedStatement、ResultSet、Connectionを
     // 閉じます。
     try {
         closeQuery(statement, reslut);
     } finally {
         closeConnection(conn);
     }
 }
 
 

パラメータ:
sts - オープンしたStatement
params - SQLラッパオブジェクト
戻り値:
実行結果ResultSet
例外:
java.sql.SQLException
関連項目:
openStatement(Connection, String sql), bindParameters(PreparedStatement sts, List params), closeQuery(PreparedStatement sts, ResultSet rs), closeConnection(Connection)

bindParameters

protected void bindParameters(java.sql.PreparedStatement sts,
                              java.util.List params)
                       throws java.sql.SQLException
PreparedStatemanetへMapListのパラメータをバインドしています。

このメソッドはopenQueryから呼出されています。

 openQueryの実装は、以下のようになっています。
 
      protected ResultSet openQuery(PreparedStatement sts, List params) 
              throws SQLException {
          
          bindParameters(sts, params);
          return sts.executeQuery();
      }
 
 上記のようにopenされたステートメントに新たにパラメータをセットして、
 SQLを実行しています。
 
 利用例:
 openQuery()の実装を参考に、実行するパラメータの配列を用意して
 以下のように処理を行なえば、バッチ的にデータベースを
 更新することが可能になります。
 
      for(int i=0; i<params.length; i++) {
          bindParameters(sts, params[i]);
          sts.executeUpdate();
      }
 
      *) paramsは、Listの配列とする
 
 

パラメータ:
sts - openされているPrepaedStatement
params - バインド変数のMapList
例外:
java.sql.SQLException
関連項目:
openQuery(PreparedStatement sts, List params)

closeQuery

protected void closeQuery(java.sql.PreparedStatement sts,
                          java.sql.ResultSet rs)
                   throws java.sql.SQLException
検索処理を閉じます。

実際にはResultSetとPreparedStatementをclose()しています。 利用方法はopenQuery()の使用例を確認してください。

パラメータ:
sts - openされているPrepaedStatement
rs - openされているResultSet
例外:
java.sql.SQLException
関連項目:
openQuery(PreparedStatement sts, List params)

closeStatement

protected void closeStatement(java.sql.PreparedStatement sts)
                       throws java.sql.SQLException
Statementインスタンスを閉じます。

パラメータ:
sts - openされているPrepaedStatemen
例外:
java.sql.SQLException

closeResultSet

protected void closeResultSet(java.sql.ResultSet rs)
                       throws java.sql.SQLException
ResultSetインスタンスを閉じます。

パラメータ:
rs - openされているResultSet
例外:
java.sql.SQLException