|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectrobbie.dao.BaseDao
DAOのベースクラス。
このクラスにはpublicメソッドは実装されていません。
このクラスは必ず継承をしてから、利用する必要があります。
拡張の方法は、このパッケージのSampleDAOおよび、XDAOの実装を確認して下さい。
XDao
,
SDao
,
直列化された形式コンストラクタの概要 | |
BaseDao()
|
メソッドの概要 | |
protected void |
bindParameters(java.sql.PreparedStatement sts,
java.util.List params)
PreparedStatemanetへMapListのパラメータをバインドしています。 |
protected void |
closeConnection()
コネクションをクローズする。 |
protected void |
closeQuery(java.sql.PreparedStatement sts,
java.sql.ResultSet rs)
検索処理を閉じます。 |
protected void |
closeResultSet(java.sql.ResultSet rs)
ResultSetインスタンスを閉じます。 |
protected void |
closeStatement(java.sql.PreparedStatement sts)
Statementインスタンスを閉じます。 |
protected void |
commit()
コミットする。 |
protected java.util.List |
executeQuery(Query query)
問い合わせを行い、結果をMapListで返します。 |
protected java.lang.Object[][] |
executeQueryForArray(Query query)
問い合わせを行い、結果をObject[][]で返します。 |
protected java.util.List |
executeQueryForBeans(Query query)
問い合わせを行い、結果をJavaBeansのListで返します。 |
protected java.util.List |
executeQueryForBeans(Query query,
java.lang.Class beanClass)
推奨されていません。 |
protected java.util.List |
executeQueryForDynaBean(Query query)
問い合わせを行い、結果をJavaBeansのListで返します。 |
protected int |
executeUpdate(Query query)
更新を行います。 |
protected java.sql.Connection |
getConnection()
Connectionオブジェクトを返す。 |
protected boolean |
isClosed()
コネクションが開いているかどうかをチェックします。 |
protected java.sql.ResultSet |
openQuery(java.sql.PreparedStatement sts,
java.util.List params)
検索を実行し、ResultSetを返します。 |
protected java.sql.PreparedStatement |
openStatement(java.lang.String sql)
Statementインスタンスを返します。 |
protected void |
rollback()
ロールバックする。 |
protected void |
setAutoCommit(boolean isAutoCommit)
AutoCommitモードをセットします。 |
protected void |
setConnection(java.sql.Connection conn)
コネクションをセットする このクラスはコネクションの取得を行いません。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
public BaseDao()
メソッドの詳細 |
protected java.sql.Connection getConnection()
protected void setConnection(java.sql.Connection conn) throws java.sql.SQLException
このクラスはコネクションの取得を行いません。 サブクラスでコネクションを作成し、このメソッドを使ってセットしてください。
conn
- サブクラスで作成したConnection
java.sql.SQLException
protected void closeConnection() throws java.sql.SQLException
java.sql.SQLException
protected boolean isClosed() throws java.sql.SQLException
JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。
java.sql.SQLException
protected void setAutoCommit(boolean isAutoCommit) throws java.sql.SQLException
JDBCの仕様では、Connectionを取得した際には、デフォルトでAutoCommitモードが trueになります。したがって、複雑なトランザクション処理を行ない、 ロールバック、コミットを多用する場合には、あらかじめオートコミットを falseに設定しておく必要があります。
また、JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。
isAutoCommit
- 有効にする場合にはtrue
java.sql.SQLException
protected void commit() throws java.sql.SQLException
JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。
java.sql.SQLException
protected void rollback() throws java.sql.SQLException
JTAによってトランザクションを管理している場合には、 このメソッドを使用すると問題が発生する場合があります。
java.sql.SQLException
protected java.util.List executeQuery(Query query) throws java.sql.SQLException
ResultSetとStatementのCloseは行いますが、コネクションのCloseを行いません。
使用例: このメソッドを使用する場合には、サブクラスで以下のように、 コネクションの取得とclose()を管理しながら、実装する 必要があります。 try { // 何らかの実装を使用して、オープンされた // Connecionオブジェクトをセットします。 setConnection(dataSource.getConnection()); // Queryのオブジェクトを渡して問合せを実行 List result = executeQuery(query): ...何らかの処理や別の問合せ } finally { // closeConnection()で必ずConnectionを閉じる。closeConnection()は // Connectionオブジェクトがnullであれば何もしない。 closeConnection(); }
query
- Queryオブジェクト
java.sql.SQLException
closeConnection()
protected java.lang.Object[][] executeQueryForArray(Query query) throws java.sql.SQLException
Object[0][*]はカラム名のヘッダになります。 データだけ使用したい場合には、Object[1][*]から使用してください
query
- Queryオブジェクト
java.sql.SQLException
executeQuery(Query)
protected java.util.List executeQueryForBeans(Query query, java.lang.Class beanClass) throws java.sql.SQLException
query
- QueryオブジェクトbeanClass
- TODO
java.sql.SQLException
protected java.util.List executeQueryForBeans(Query query) throws java.sql.SQLException
query
- Queryオブジェクト
java.sql.SQLException
protected java.util.List executeQueryForDynaBean(Query query) throws java.sql.SQLException
query
- Queryオブジェクト
java.sql.SQLException
protected int executeUpdate(Query query) throws java.sql.SQLException
StatementのCloseは行いますが、コネクションのCloseは行いません。
使用例: このメソッドを使用する場合には、サブクラスで以下のように、 コネクションの取得とclose()を管理しながら、実装する 必要があります。 try { // 何らかの実装を使用して、オープンされた // Connecionオブジェクトをセットします。 setConnection(dataSource.getConnection()); // SQLのオブジェクトを渡して更新処理を実行 int count = executeUpdate(query): // 例として、更新が行なわれていたらtrue、 // 1行も更新されていなければfalseを返す if(count > 0) { return true; } return false; } finally { // closeConnection()で必ずConnectionを閉じる。closeConnection()は // Connectionオブジェクトがnullであれば何もしない。 closeConnection(); }また、このクラスはStatementを閉じてしまうため、SQLは再利用できません。
バッチ処理のようにSQLを再利用するためには、サブクラスでopenStatement()や bindParameters()などのAPIを利用して再実装する必要があります。
query
- Queryクラス
java.sql.SQLException
closeConnection()
protected java.sql.PreparedStatement openStatement(java.lang.String sql) throws java.sql.SQLException
利用方法はopenQuery()の使用例を確認してください。
sql
- SQLクラス
java.sql.SQLException
openQuery(PreparedStatement sts, List params)
protected java.sql.ResultSet openQuery(java.sql.PreparedStatement sts, java.util.List params) throws java.sql.SQLException
executeQueryは、検索結果をMapListで返しますが、このメソッドでは、 既にopenされたStatementにバインド変数をセットして、ResultSetを 返します。
使用例: このメソッドを使用する場合には、サブクラスで以下のように、 PreparedStatement、ResultSet、Connectionの取得とclose()、 およびSQLクラスを管理しながら、実装する必要があります。 PreparedStatement statement = null; ResultSet reslut = null; try { // 何らかの実装を使用して、オープンされた // Connecionオブジェクトをセットします。 setConnection(dataSource.getConnection()); // QueryのオブジェクトからSQL文字列をバインド変数のMapListを // 取り出します。 String sqlStr = query.getSQLString(); List params = query.getBindParametersMapList(); // StatementをOPENし、SQLを実行してResultSetを取得します。 statement = openStatement(sqlStr); result = openQuery(statement, params); // ResutlSetを使用して何かの処理を行ないます。 ・・・・・ } finally { // 必ずPreparedStatement、ResultSet、Connectionを // 閉じます。 try { closeQuery(statement, reslut); } finally { closeConnection(); } }
sts
- オープンしたStatementparams
- SQLラッパオブジェクト
java.sql.SQLException
openStatement(String sql)
,
bindParameters(PreparedStatement sts, List params)
,
closeQuery(PreparedStatement sts, ResultSet rs)
,
closeConnection()
protected void bindParameters(java.sql.PreparedStatement sts, java.util.List params) throws java.sql.SQLException
このメソッドはopenQueryから呼出されています。
openQueryの実装は、以下のようになっています。 protected ResultSet openQuery(PreparedStatement sts, List params) throws SQLException { bindParameters(sts, params); return sts.executeQuery(); } 上記のようにopenされたステートメントに新たにパラメータをセットして、 SQLを実行しています。 利用例: openQuery()の実装を参考に、実行するパラメータの配列を用意して 以下のように処理を行なえば、バッチ的にデータベースを 更新することが可能になります。 for(int i=0; i<params.length; i++) { bindParameters(sts, params[i]); sts.executeUpdate(); } *) paramsは、Listの配列とする
sts
- openされているPrepaedStatementparams
- バインド変数のMapList
java.sql.SQLException
openQuery(PreparedStatement sts, List params)
protected void closeQuery(java.sql.PreparedStatement sts, java.sql.ResultSet rs) throws java.sql.SQLException
実際にはResultSetとPreparedStatementをclose()しています。 利用方法はopenQuery()の使用例を確認してください。
sts
- openされているPrepaedStatementrs
- openされているResultSet
java.sql.SQLException
openQuery(PreparedStatement sts, List params)
protected void closeStatement(java.sql.PreparedStatement sts) throws java.sql.SQLException
sts
- openされているPrepaedStatemen
java.sql.SQLException
protected void closeResultSet(java.sql.ResultSet rs) throws java.sql.SQLException
rs
- openされているResultSet
java.sql.SQLException
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |