|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
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.SQLExceptioncloseConnection(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.SQLExceptionexecuteQuery(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.SQLExceptioncloseConnection(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.SQLExceptionopenQuery(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.SQLExceptionopenStatement(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.SQLExceptionopenQuery(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.SQLExceptionopenQuery(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
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||