|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectrobbie.dao.BaseDao
robbie.dao.x.XDao
robbie.dao.x.GeneralizedXDao
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を使用した柔軟な処理がサブクラスを 作成しなくても可能になります。
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 |
コンストラクタの詳細 |
public GeneralizedXDao()
メソッドの詳細 |
public void openConnection() throws java.sql.SQLException
java.sql.SQLException
public void closeConnection() throws java.sql.SQLException
java.sql.SQLException
public boolean isClosed() throws java.sql.SQLException
このAPIはCMT上では、うまく動作しない可能性があります。
java.sql.SQLException
public void setAutoCommit(boolean isAutoCommit) throws java.sql.SQLException
isAutoCommit
-
java.sql.SQLException
public void commit() throws java.sql.SQLException
java.sql.SQLException
public void rollback() throws java.sql.SQLException
java.sql.SQLException
public java.util.List executeQuery(java.lang.String id, java.lang.Object beans) throws java.sql.SQLException
java.sql.SQLException
public java.lang.Object[][] executeQueryForArray(java.lang.String id, java.lang.Object beans) throws java.sql.SQLException
java.sql.SQLException
public java.util.List executeQueryForBeans(java.lang.String id, java.lang.Object beans) throws java.sql.SQLException
java.sql.SQLException
public java.util.List executeQueryForDynaBean(java.lang.String id, java.lang.Object beans) throws java.sql.SQLException
java.sql.SQLException
public int executeUpdate(java.lang.String id, java.lang.Object beans) throws java.sql.SQLException
java.sql.SQLException
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |