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を
 作成する必要がありました。
 
 しかし、拡張XDaoは拡張を行わなくても、明示的なトランザクションが実行できるように
 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
作成者:
Tadahiro Murakami
関連項目:
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)
          推奨されていません。  
 java.lang.Object[][] executeQueryForArray(java.lang.String id, java.lang.Object beans)
          推奨されていません。  
 java.util.List executeQueryForBeans(java.lang.String id, java.lang.Object beans)
          推奨されていません。  
 java.util.List executeQueryForDynaBean(java.lang.String id, java.lang.Object beans)
          推奨されていません。  
 int executeUpdate(java.lang.String id, java.lang.Object beans)
          推奨されていません。  
 boolean isClosed()
          推奨されていません。 GeneralizedXDaoが保持するConnectionが閉じているか確認します。
 void openConnection()
          推奨されていません。 新規にデータベースコネクションをオープンします。
 void rollback()
          推奨されていません。 GeneralizedXDaoが保持するConnectionを使用してトランザクションをロールバックします。
 void setAutoCommit(boolean isAutoCommit)
          推奨されていません。 GeneralizedXDaoが保持するConnectionにオートコミットモードをセットします。
 
クラス robbie.dao.x.XDao から継承したメソッド
configure, getSQLException, query, query, queryForArray, queryForBeans, queryForDynaBean, release, setQueryFactory, setResource, update
 
クラス robbie.dao.BaseDao から継承したメソッド
bindParameters, closeConnection, closeQuery, closeResultSet, closeStatement, commit, executeQuery, 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
推奨されていません。 
例外:
java.sql.SQLException

executeQueryForArray

public java.lang.Object[][] executeQueryForArray(java.lang.String id,
                                                 java.lang.Object beans)
                                          throws java.sql.SQLException
推奨されていません。 
例外:
java.sql.SQLException

executeQueryForBeans

public java.util.List executeQueryForBeans(java.lang.String id,
                                           java.lang.Object beans)
                                    throws java.sql.SQLException
推奨されていません。 
例外:
java.sql.SQLException

executeQueryForDynaBean

public java.util.List executeQueryForDynaBean(java.lang.String id,
                                              java.lang.Object beans)
                                       throws java.sql.SQLException
推奨されていません。 
例外:
java.sql.SQLException

executeUpdate

public int executeUpdate(java.lang.String id,
                         java.lang.Object beans)
                  throws java.sql.SQLException
推奨されていません。 
例外:
java.sql.SQLException