|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectrobbie.dao.BaseDao
robbie.dao.x.XDao
robbie.dao.x.GeneralXDao
GeneralXDaoクラス。
XDaoは暗黙的なトランザクションで、そのメソッドが1トランザクションとして 実行されてしまいます。(ただし、CMTによるEJB内部では必ずしもそうでえはありません) その結果、明示的にトランザクションを実装するためには、XDaoを継承した拡張Daoを 作成する必要がありました。 しかし、GeneralXDaoは拡張を行わなくても、明示的なトランザクションが実行できるように BaseDaoの一部のAPIをpublicにしたものになります。 これによって、外部でJTAなどを使用して明示的なトランザクションを実装し、複数のDaoの トランザクションの同期をとることも可能です。 以下が、コーディング例になります。 XDaoFactory factory = new XDaoFactory("etc/test-config.xml"); GeneralXDao dao = (GeneralXDao)factory.createDaoInstance("GeneralXDao"); 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) { // 何もしない } } 上記のようにStandaloneXDaoの場合には、コネクションのopen/close、および例外の 管理を行う必要がありますが、commit/rollbackを使用した柔軟な処理がサブクラスを 作成しなくても可能になります。
BaseDao
,
XDao
,
直列化された形式フィールドの概要 |
クラス robbie.dao.x.XDao から継承したフィールド |
CATCH_SQL_EXCEPTION_COUNT, exception, queryFactory, resource |
コンストラクタの概要 | |
GeneralXDao()
|
メソッドの概要 | |
void |
closeConnection()
コネクションをクローズする。 |
void |
commit()
コミットする。 |
java.util.List |
executeQuery(java.lang.String id,
java.util.Map params)
BaseDao#executeQuery(Query)をpublicにしました。 |
java.lang.Object[][] |
executeQueryForArray(java.lang.String id,
java.util.Map params)
BaseDao#executeQueryForArray(Query)をpublicにしました。 |
java.util.List |
executeQueryForBeans(java.lang.String id,
java.util.Map params,
java.lang.Class beanClass)
BaseDao#executeQueryForBeans(Query, Class)をpublicにしました。 |
int |
executeUpdate(java.lang.String id,
java.util.Map params)
BaseDao#executeUpdate(Query)をpublicにしました。 |
int |
executeUpdate(java.lang.String id,
java.lang.Object bean)
BaseDao#executeUpdate(Query)をpublicにしました。 |
boolean |
isClosed()
コネクションが開いているかどうかをチェックします。 |
void |
openConnection()
新規にデータベースコネクションをオープンします。 |
void |
rollback()
ロールバックする。 |
void |
setAutoCommit(boolean isAutoCommit)
AutoCommitモードをセットします。 |
クラス robbie.dao.x.XDao から継承したメソッド |
configure, getSQLException, query, queryForArray, queryForBeans, release, setQueryFactory, setResource, update, update |
クラス robbie.dao.BaseDao から継承したメソッド |
bindParameters, closeQuery, closeResultSet, closeStatement, executeQuery, executeQueryForArray, executeQueryForBeans, executeUpdate, getConnection, openQuery, openStatement, setConnection |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
public GeneralXDao()
メソッドの詳細 |
public void openConnection() throws java.sql.SQLException
java.sql.SQLException
public void closeConnection() throws java.sql.SQLException
BaseDao
の記述:
BaseDao
内の closeConnection
java.sql.SQLException
public boolean isClosed() throws java.sql.SQLException
BaseDao
の記述: JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。
BaseDao
内の isClosed
java.sql.SQLException
public void setAutoCommit(boolean isAutoCommit) throws java.sql.SQLException
BaseDao
の記述: JDBCの仕様では、Connectionを取得した際には、デフォルトでAutoCommitモードが trueになります。したがって、複雑なトランザクション処理を行ない、 ロールバック、コミットを多用する場合には、あらかじめオートコミットを falseに設定しておく必要があります。
また、JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。
BaseDao
内の setAutoCommit
isAutoCommit
- 有効にする場合にはtrue
java.sql.SQLException
public void commit() throws java.sql.SQLException
BaseDao
の記述: JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。
BaseDao
内の commit
java.sql.SQLException
public void rollback() throws java.sql.SQLException
BaseDao
の記述: JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。
BaseDao
内の rollback
java.sql.SQLException
public java.util.List executeQuery(java.lang.String id, java.util.Map params) throws java.sql.SQLException
id
- queryのidparams
- パラメータMap
java.sql.SQLException
BaseDao.executeQuery(robbie.dao.Query)
public java.lang.Object[][] executeQueryForArray(java.lang.String id, java.util.Map params) throws java.sql.SQLException
id
- queryのidparams
- パラメータMap
java.sql.SQLException
BaseDao.executeQueryForArray(robbie.dao.Query)
public java.util.List executeQueryForBeans(java.lang.String id, java.util.Map params, java.lang.Class beanClass) throws java.sql.SQLException
id
- queryのidparams
- パラメータMap
java.sql.SQLException
BaseDao.executeQueryForBeans(robbie.dao.Query, Class)
public int executeUpdate(java.lang.String id, java.util.Map params) throws java.sql.SQLException
id
- queryのidparams
- パラメータMap
java.sql.SQLException
BaseDao.executeUpdate(robbie.dao.Query)
public int executeUpdate(java.lang.String id, java.lang.Object bean) throws java.sql.SQLException
id
- queryのidbean
- パラメータとなるJavaBean
java.sql.SQLException
BaseDao.executeUpdate(robbie.dao.Query)
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |