robbie.dao.x
クラス GeneralizedXDao

java.lang.Object
  拡張robbie.dao.BaseDao
      拡張robbie.dao.x.XDao
          拡張robbie.dao.x.GeneralizedXDao
すべての実装インタフェース:
java.io.Serializable

public class GeneralizedXDao
extends XDao

GeneralizedXDaoクラス。

 XDaoは暗黙的なトランザクションで、そのメソッドが1トランザクションとして
 実行されてしまいます。(ただし、CMTによるEJB内部では必ずしもそうでえはありません)
 その結果、明示的にトランザクションを実装するためには、XDaoを継承した拡張Daoを
 作成する必要がありました。
 
 しかし、GeneralizedXDaoは拡張を行わなくても、明示的なトランザクションが実行できるように
 BaseDaoのAPIをpublicにし、また使用するConnectionをメンバ変数として保持したものになります。
 
 これによって、外部でJTAなどを使用して明示的なトランザクションを実装し、複数のDaoの
 トランザクションの同期をとることも可能です。
 
 以下が、コーディング例になります。
 
         XDaoFactory factory = new XDaoFactory("etc/test-config.xml");
         GeneralizedXDao dao = (GeneralizedXDao)factory.createDaoInstance("GeneralizedXDao");
         
         try {
             // Connectionの取得
             dao.openConnection();
             dao.setAutoCommit(false);
             
             // パラメータMapの設定
             Map params = new HashMap();
             params.put("id", new Integer(4));
             params.put("name", "EEE");
             params.put("age",  new Integer(4));
             
             int count = dao.executeUpdate("test9", params);
             if (count != 1) {
                 dao.rollback();
             } else {
                 dao.commit();
             }
             
             System.out.println("updateCount=" + count);
             
         } catch(Exception ex) {
             try {
                 dao.rollback();
             } catch(Exception ex2) {
                 
             }
             throw ex;
         } finally {
             try {
                 // Connectionを閉じる
                 dao.closeConnection();
             } catch(Exception ex) {
                 // 何もしない
             }
         }
 
 上記のようにGeneralizedXDaoの場合には、コネクションのopen/close、および例外の
 管理を行う必要がありますが、commit/rollbackを使用した柔軟な処理がサブクラスを
 作成しなくても可能になります。
 
 

導入されたバージョン:
1.3.0
関連項目:
BaseDao, XDao, 直列化された形式

フィールドの概要
 
クラス robbie.dao.x.XDao から継承したフィールド
CATCH_SQL_EXCEPTION_COUNT, exception, queryFactory, resource
 
コンストラクタの概要
GeneralizedXDao()
           
 
メソッドの概要
 void closeConnection()
          GeneralizedXDaoが保持するConnectionをcloseします。
 void commit()
          GeneralizedXDaoが保持するConnection使用してトランザクションをコミットします。
 java.util.List executeQuery(java.lang.String id, java.lang.Object beans)
          BaseDao#executeQuery(Query)をpublicにしました。
 java.lang.Object[][] executeQueryForArray(java.lang.String id, java.lang.Object beans)
          BaseDao#executeQueryForArray(Query)をpublicにしました。
 java.util.List executeQueryForBeans(java.lang.String id, java.lang.Object beans)
          BaseDao#executeQueryForBeans(Query)をpublicにしました。
 java.util.List executeQueryForDynaBean(java.lang.String id, java.lang.Object beans)
          BaseDao#executeQueryForDynaBean(Query)をpublicにしました。
 int executeUpdate(java.lang.String id, java.lang.Object beans)
          BaseDao#executeUpdate(Query)をpublicにしました。
 boolean isClosed()
          GeneralizedXDaoが保持するConnectionが閉じているか確認します。
 void openConnection()
          新規にデータベースコネクションをオープンします。
 void rollback()
          GeneralizedXDaoが保持するConnectionを使用してトランザクションをロールバックします。
 void setAutoCommit(boolean isAutoCommit)
          GeneralizedXDaoが保持するConnectionにオートコミットモードをセットします。
 
クラス robbie.dao.x.XDao から継承したメソッド
configure, getSQLException, query, queryForArray, queryForBeans, queryForDynaBean, release, setQueryFactory, setResource, update
 
クラス robbie.dao.BaseDao から継承したメソッド
bindParameters, closeConnection, closeQuery, closeResultSet, closeStatement, commit, executeQuery, executeQueryForArray, executeQueryForBeans, executeQueryForDynaBean, executeUpdate, isClosed, openQuery, openStatement, rollback, setAutoCommit
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

GeneralizedXDao

public GeneralizedXDao()
メソッドの詳細

openConnection

public void openConnection()
                    throws java.sql.SQLException
新規にデータベースコネクションをオープンします。

例外:
java.sql.SQLException

closeConnection

public void closeConnection()
                     throws java.sql.SQLException
GeneralizedXDaoが保持するConnectionをcloseします。

例外:
java.sql.SQLException

isClosed

public boolean isClosed()
                 throws java.sql.SQLException
GeneralizedXDaoが保持するConnectionが閉じているか確認します。

このAPIはCMT上では、うまく動作しない可能性があります。

戻り値:
Connectionが閉じていればtrue
例外:
java.sql.SQLException

setAutoCommit

public void setAutoCommit(boolean isAutoCommit)
                   throws java.sql.SQLException
GeneralizedXDaoが保持するConnectionにオートコミットモードをセットします。

パラメータ:
isAutoCommit -
例外:
java.sql.SQLException

commit

public void commit()
            throws java.sql.SQLException
GeneralizedXDaoが保持するConnection使用してトランザクションをコミットします。

例外:
java.sql.SQLException

rollback

public void rollback()
              throws java.sql.SQLException
GeneralizedXDaoが保持するConnectionを使用してトランザクションをロールバックします。

例外:
java.sql.SQLException

executeQuery

public java.util.List executeQuery(java.lang.String id,
                                   java.lang.Object beans)
                            throws java.sql.SQLException
BaseDao#executeQuery(Query)をpublicにしました。

パラメータ:
id - queryのid
beans - パラメータとなるObjec(MapまたはJavaBeansまたはDynaBean)
戻り値:
MapのList
例外:
java.sql.SQLException
導入されたバージョン:
1.3.0
関連項目:
BaseDao.executeQuery(java.sql.Connection, robbie.dao.Query)

executeQueryForArray

public java.lang.Object[][] executeQueryForArray(java.lang.String id,
                                                 java.lang.Object beans)
                                          throws java.sql.SQLException
BaseDao#executeQueryForArray(Query)をpublicにしました。

パラメータ:
id - queryのid
beans - パラメータとなるObject(MapまたはJavaBeansまたはDynaBean)
戻り値:
問い合わせ結果の2次元配列
例外:
java.sql.SQLException
導入されたバージョン:
1.3.0
関連項目:
BaseDao.executeQueryForArray(java.sql.Connection, robbie.dao.Query)

executeQueryForBeans

public java.util.List executeQueryForBeans(java.lang.String id,
                                           java.lang.Object beans)
                                    throws java.sql.SQLException
BaseDao#executeQueryForBeans(Query)をpublicにしました。

パラメータ:
id - queryのid
beans - パラメータObject(MapまたはJavaBeansまたはDynaBean)
戻り値:
JavaBeansのList
例外:
java.sql.SQLException
導入されたバージョン:
1.3.0
関連項目:
BaseDao.executeQueryForBeans(java.sql.Connection, robbie.dao.Query)

executeQueryForDynaBean

public java.util.List executeQueryForDynaBean(java.lang.String id,
                                              java.lang.Object beans)
                                       throws java.sql.SQLException
BaseDao#executeQueryForDynaBean(Query)をpublicにしました。

パラメータ:
id - queryのid
beans - パラメータObject(MapまたはJavaBeansまたはDynaBean)
戻り値:
JavaBeansのList
例外:
java.sql.SQLException
導入されたバージョン:
1.3.0
関連項目:
BaseDao.executeQueryForDynaBean(java.sql.Connection, robbie.dao.Query)

executeUpdate

public int executeUpdate(java.lang.String id,
                         java.lang.Object beans)
                  throws java.sql.SQLException
BaseDao#executeUpdate(Query)をpublicにしました。

パラメータ:
id - queryのid
beans - パラメータとなるObject(MapまたはJavaBeansまたはDynaBean)
戻り値:
更新件数
例外:
java.sql.SQLException
関連項目:
BaseDao.executeUpdate(java.sql.Connection, robbie.dao.Query)