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