|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectrobbie.dao.BaseDao
robbie.dao.x.XDao
robbie.dao.x.GeneralizedXDao
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を使用した柔軟な処理がサブクラスを 作成しなくても可能になります。
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 |
コンストラクタの詳細 |
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
id
- queryのidbeans
- パラメータとなるObjec(MapまたはJavaBeansまたはDynaBean)
java.sql.SQLException
BaseDao.executeQuery(java.sql.Connection, robbie.dao.Query)
public java.lang.Object[][] executeQueryForArray(java.lang.String id, java.lang.Object beans) throws java.sql.SQLException
id
- queryのidbeans
- パラメータとなるObject(MapまたはJavaBeansまたはDynaBean)
java.sql.SQLException
BaseDao.executeQueryForArray(java.sql.Connection, robbie.dao.Query)
public java.util.List executeQueryForBeans(java.lang.String id, java.lang.Object beans) throws java.sql.SQLException
id
- queryのidbeans
- パラメータObject(MapまたはJavaBeansまたはDynaBean)
java.sql.SQLException
BaseDao.executeQueryForBeans(java.sql.Connection, robbie.dao.Query)
public java.util.List executeQueryForDynaBean(java.lang.String id, java.lang.Object beans) throws java.sql.SQLException
id
- queryのidbeans
- パラメータObject(MapまたはJavaBeansまたはDynaBean)
java.sql.SQLException
BaseDao.executeQueryForDynaBean(java.sql.Connection, robbie.dao.Query)
public int executeUpdate(java.lang.String id, java.lang.Object beans) throws java.sql.SQLException
id
- queryのidbeans
- パラメータとなるObject(MapまたはJavaBeansまたはDynaBean)
java.sql.SQLException
BaseDao.executeUpdate(java.sql.Connection, robbie.dao.Query)
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |