Package nablarch.core.db.connection
Class BasicDbConnection
java.lang.Object
nablarch.core.db.connection.BasicDbConnection
- All Implemented Interfaces:
AppDbConnection
,TransactionManagerConnection
TransactionManagerConnection
の基本実装クラス。
本オブジェクトは、マルチスレッド環境で使用されることは想定しない。すなわち、スレッドアンセーフなオブジェクトである。- Author:
- Hisaaki Sioiri
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
コネクションをクローズする。
Connection.close()
を呼び出す。void
ステートメントをクローズする。
本データベースオブジェクトから生成されたステートメントオブジェクトを一括でクローズする。void
commit()
現在のデータベース接続に対してcommitを実行する。データベース接続オブジェクトを取得する。コネクションのDefaultDialect
を取得する。void
データベース接続の初期化処理を行う。prepareCall
(String sql) ストアドプロシージャ実行用のStatementオブジェクトを生成する。prepareCallBySqlId
(String sqlId) ストアドプロシージャ実行用のStatementオブジェクトをSQL_IDを元に生成する。SQL_IDを元に件数取得(カウント)用のStatementオブジェクトを生成する。prepareParameterizedCountSqlStatementBySqlId
(String sqlId, Object condition) SQL_IDを元に件数取得(カウント)用のStatementオブジェクトを生成する。名前付きパラメータをもつSQL文実行用のStatementオブジェクトを生成する。prepareParameterizedSqlStatement
(String sql, Object condition) 名前付きパラメータをもつ可変条件SQL文実行用のStatementオブジェクトを生成する。prepareParameterizedSqlStatement
(String sql, Object condition, SelectOption selectOption) 検索範囲を指定して、名前付きパラメータをもつ可変条件SQL文実行用のStatementオブジェクトを生成する。prepareParameterizedSqlStatement
(String sql, SelectOption selectOption) 検索範囲を指定した名前付きパラメータをもつSQL文実行用のStatementオブジェクトを生成する。名前付きパラメータをもつSQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。prepareParameterizedSqlStatementBySqlId
(String sqlId, Object condition) 名前付きパラメータをもつ可変条件SQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。prepareParameterizedSqlStatementBySqlId
(String sqlId, Object condition, SelectOption selectOption) 検索範囲を設定した名前付きパラメータをもつ可変条件SQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。prepareParameterizedSqlStatementBySqlId
(String sqlId, SelectOption selectOption) 検索範囲を設定した名前付きパラメータをもつSQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。prepareStatement
(String sql) パラメータ付きSQL文実行用のStatementオブジェクトを生成する。prepareStatement
(String sql, int autoGeneratedKeys) 自動生成キー(データベース側で自動生成された値)を取得する機能を持つStatementオブジェクトを生成する。prepareStatement
(String sql, int[] columnIndexes) 自動生成キー(データベース側で自動生成された値)を取得する機能を持つStatementオブジェクトを生成する。prepareStatement
(String sql, String[] columnNames) 自動生成キー(データベース側で自動生成された値)を取得する機能を持つStatementオブジェクトを生成する。prepareStatement
(String sql, SelectOption selectOption) 検索範囲を指定したパラメータ付きSQL文実行用のStatementオブジェクトを生成する。prepareStatementBySqlId
(String sqlId) パラメータ付きSQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。prepareStatementBySqlId
(String sqlId, SelectOption selectOption) 検索範囲を指定したパラメータ付きSQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。void
removeStatement
(SqlStatement statement) 保持しているStatementを削除する。void
rollback()
現在のデータベース接続に対してrollbackを実行する。void
setContext
(DbExecutionContext context) コンテキストを設定する。void
setDbAccessExceptionFactory
(DbAccessExceptionFactory dbAccessExceptionFactory) DbAccessException
ファクトリオブジェクトを設定する。void
setFactory
(StatementFactory factory) StatementFactory
実装クラスを設定する。void
setIsolationLevel
(int level) アイソレーションレベルを設定する。void
setJdbcTransactionTimeoutHandler
(JdbcTransactionTimeoutHandler jdbcTransactionTimeoutHandler) トランザクションタイムアウトハンドラを設定する。void
setStatementReuse
(boolean statementReuse) ステートメントのキャッシュ有無を設定する。void
データベース接続の終了処理を行う。
本処理では、下記処理を行う。 ロールバック処理(未確定のトランザクション情報は全て破棄する。) 本クラスで生成されたSqlStatement
のクローズ処理 ステートメントキャッシュが有効な場合のキャッシュのクリア処理closeConnection()
の呼び出し
-
Constructor Details
-
BasicDbConnection
指定されたデータ接続を保持するオブジェクトを生成する。- Parameters:
con
- データベース接続オブジェクト
-
-
Method Details
-
initialize
public void initialize()データベース接続の初期化処理を行う。
下記処理を行う。
- Auto commitモードを無効化
- Specified by:
initialize
in interfaceTransactionManagerConnection
-
commit
public void commit()現在のデータベース接続に対してcommitを実行する。- Specified by:
commit
in interfaceTransactionManagerConnection
- See Also:
-
rollback
public void rollback()現在のデータベース接続に対してrollbackを実行する。- Specified by:
rollback
in interfaceTransactionManagerConnection
-
terminate
public void terminate()データベース接続の終了処理を行う。
本処理では、下記処理を行う。- ロールバック処理(未確定のトランザクション情報は全て破棄する。)
- 本クラスで生成された
SqlStatement
のクローズ処理 - ステートメントキャッシュが有効な場合のキャッシュのクリア処理
closeConnection()
の呼び出し
- Specified by:
terminate
in interfaceTransactionManagerConnection
- See Also:
-
closeConnection
コネクションをクローズする。
Connection.close()
を呼び出す。- Throws:
SQLException
- SQL例外
-
setIsolationLevel
public void setIsolationLevel(int level) アイソレーションレベルを設定する。- Specified by:
setIsolationLevel
in interfaceTransactionManagerConnection
- Parameters:
level
- アイソレーションレベル(Connection
で定義されている次の定数のうち1つを設定する。)- See Also:
-
prepareStatement
Description copied from interface:AppDbConnection
パラメータ付きSQL文実行用のStatementオブジェクトを生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。- Specified by:
prepareStatement
in interfaceAppDbConnection
- Parameters:
sql
- SQL文- Returns:
PreparedStatement
のラッパーstatement- See Also:
-
prepareStatement
Description copied from interface:AppDbConnection
検索範囲を指定したパラメータ付きSQL文実行用のStatementオブジェクトを生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 注意:本メソッドで返却されるSqlPStatement
は、あらかじめ検索範囲が設定されているため、SqlPStatement.retrieve(int, int)
のような、検索範囲を指定した簡易検索処理は実行できない。
SqlPStatement.retrieve()
を使用すること。- Specified by:
prepareStatement
in interfaceAppDbConnection
- Parameters:
sql
- SQL文selectOption
- 検索処理オプション- Returns:
PreparedStatement
のラッパーstatement- See Also:
-
prepareStatement
Description copied from interface:AppDbConnection
自動生成キー(データベース側で自動生成された値)を取得する機能を持つStatementオブジェクトを生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 自動生成されたキーは、SqlPStatement.getGeneratedKeys()
を使用して取得する必要がある。- Specified by:
prepareStatement
in interfaceAppDbConnection
- Parameters:
sql
- SQL文autoGeneratedKeys
- 自動生成キーを返すかどうかを示すフラグ。Statement.RETURN_GENERATED_KEYS
またはStatement.NO_GENERATED_KEYS
- Returns:
- 自動生成キーの取得機能を持つ
PreparedStatement
のラッパーStatement - See Also:
-
prepareStatement
Description copied from interface:AppDbConnection
自動生成キー(データベース側で自動生成された値)を取得する機能を持つStatementオブジェクトを生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 自動生成されたキーは、SqlPStatement.getGeneratedKeys()
を使用して取得する必要がある。- Specified by:
prepareStatement
in interfaceAppDbConnection
- Parameters:
sql
- SQL文columnIndexes
- 挿入された行から返される列を示す列インデックスの配列- Returns:
- 自動生成キーの取得機能を持つ
PreparedStatement
のラッパーStatement - See Also:
-
prepareStatement
Description copied from interface:AppDbConnection
自動生成キー(データベース側で自動生成された値)を取得する機能を持つStatementオブジェクトを生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 自動生成されたキーは、SqlPStatement.getGeneratedKeys()
を使用して取得する必要がある。- Specified by:
prepareStatement
in interfaceAppDbConnection
- Parameters:
sql
- SQL文columnNames
- 挿入された行から返される列を示す列名の配列- Returns:
- 自動生成キーの取得機能を持つ
PreparedStatement
のラッパーStatement - See Also:
-
prepareStatementBySqlId
Description copied from interface:AppDbConnection
パラメータ付きSQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。 指定されたSQL_IDに紐づくSQL文を取得し、Statementオブジェクトを生成する。
Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。- Specified by:
prepareStatementBySqlId
in interfaceAppDbConnection
- Parameters:
sqlId
- SQL_ID- Returns:
PreparedStatement
のラッパーStatement- See Also:
-
prepareStatementBySqlId
Description copied from interface:AppDbConnection
検索範囲を指定したパラメータ付きSQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。 指定されたSQL_IDに紐づくSQL文を取得し、Statementオブジェクトを生成する。
Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 注意:本メソッドで返却されるSqlPStatement
は、あらかじめ検索範囲が設定されているため、SqlPStatement.retrieve(int, int)
のような、検索範囲を指定した簡易検索処理は実行できない。
SqlPStatement.retrieve()
を使用すること。- Specified by:
prepareStatementBySqlId
in interfaceAppDbConnection
- Parameters:
sqlId
- SQL_IDselectOption
- 検索処理オプション- Returns:
PreparedStatement
のラッパーstatement- See Also:
-
prepareParameterizedSqlStatement
Description copied from interface:AppDbConnection
名前付きパラメータをもつSQL文実行用のStatementオブジェクトを生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、名前付きパラメータをもつSQL文専用である。 このため、通常のバインド変数(バインド変数を「?」で表すもの)をもつSQL文の場合は、 本メソッドで生成したParameterizedSqlPStatement
では処理できないことに注意すること。- Specified by:
prepareParameterizedSqlStatement
in interfaceAppDbConnection
- Parameters:
sql
- SQL文- Returns:
- Statementオブジェクト
- See Also:
-
prepareParameterizedSqlStatement
public ParameterizedSqlPStatement prepareParameterizedSqlStatement(String sql, SelectOption selectOption) Description copied from interface:AppDbConnection
検索範囲を指定した名前付きパラメータをもつSQL文実行用のStatementオブジェクトを生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、名前付きパラメータをもつSQL文専用である。 このため、通常のバインド変数(バインド変数を「?」で表すもの)をもつSQL文の場合は、 本メソッドで生成したParameterizedSqlPStatement
では処理できないことに注意すること。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、あらかじめ検索範囲が設定されているため、ParameterizedSqlPStatement.retrieve(int, int, Object)
のような、検索範囲を指定した簡易検索処理は実行できない。- Specified by:
prepareParameterizedSqlStatement
in interfaceAppDbConnection
- Parameters:
sql
- SQL文selectOption
- 検索処理オプション- Returns:
- Statementオブジェクト
- See Also:
-
prepareParameterizedSqlStatementBySqlId
Description copied from interface:AppDbConnection
名前付きパラメータをもつSQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、名前付きパラメータをもつSQL文専用である。 このため、通常のバインド変数(バインド変数を「?」で表すもの)をもつSQL文の場合は、 本メソッドで生成したParameterizedSqlPStatement
では処理できないことに注意すること。- Specified by:
prepareParameterizedSqlStatementBySqlId
in interfaceAppDbConnection
- Parameters:
sqlId
- SQL_ID- Returns:
- Statementオブジェクト
- See Also:
-
prepareParameterizedSqlStatementBySqlId
public ParameterizedSqlPStatement prepareParameterizedSqlStatementBySqlId(String sqlId, SelectOption selectOption) Description copied from interface:AppDbConnection
検索範囲を設定した名前付きパラメータをもつSQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、名前付きパラメータをもつSQL文専用である。 このため、通常のバインド変数(バインド変数を「?」で表すもの)をもつSQL文の場合は、 本メソッドで生成したParameterizedSqlPStatement
では処理できないことに注意すること。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、あらかじめ検索範囲が設定されているため、ParameterizedSqlPStatement.retrieve(int, int, Object)
のような、検索範囲を指定した簡易検索処理は実行できない。- Specified by:
prepareParameterizedSqlStatementBySqlId
in interfaceAppDbConnection
- Parameters:
sqlId
- SQL_IDselectOption
- 検索処理オプション- Returns:
- Statementオブジェクト
- See Also:
-
prepareParameterizedSqlStatement
Description copied from interface:AppDbConnection
名前付きパラメータをもつ可変条件SQL文実行用のStatementオブジェクトを生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、名前付きパラメータをもつSQL文専用である。 このため、通常のバインド変数(バインド変数を「?」で表すもの)をもつSQL文の場合は、 本メソッドで生成したParameterizedSqlPStatement
では処理できないことに注意すること。- Specified by:
prepareParameterizedSqlStatement
in interfaceAppDbConnection
- Parameters:
sql
- SQL文condition
- 可変条件に設定される条件をもつオブジェクト- Returns:
- Statementオブジェクト
- See Also:
-
prepareParameterizedSqlStatement
public ParameterizedSqlPStatement prepareParameterizedSqlStatement(String sql, Object condition, SelectOption selectOption) Description copied from interface:AppDbConnection
検索範囲を指定して、名前付きパラメータをもつ可変条件SQL文実行用のStatementオブジェクトを生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、名前付きパラメータをもつSQL文専用である。 このため、通常のバインド変数(バインド変数を「?」で表すもの)をもつSQL文の場合は、 本メソッドで生成したParameterizedSqlPStatement
では処理できないことに注意すること。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、あらかじめ検索範囲が設定されているため、ParameterizedSqlPStatement.retrieve(int, int, Object)
のような、検索範囲を指定した簡易検索処理は実行できない。- Specified by:
prepareParameterizedSqlStatement
in interfaceAppDbConnection
- Parameters:
sql
- SQL文condition
- 可変条件に設定される条件をもつオブジェクトselectOption
- 検索処理オプション- Returns:
- Statementオブジェクト
- See Also:
-
prepareParameterizedSqlStatementBySqlId
public ParameterizedSqlPStatement prepareParameterizedSqlStatementBySqlId(String sqlId, Object condition) Description copied from interface:AppDbConnection
名前付きパラメータをもつ可変条件SQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、名前付きパラメータをもつSQL文専用である。 このため、通常のバインド変数(バインド変数を「?」で表すもの)をもつSQL文の場合は、 本メソッドで生成したParameterizedSqlPStatement
では処理できないことに注意すること。- Specified by:
prepareParameterizedSqlStatementBySqlId
in interfaceAppDbConnection
- Parameters:
sqlId
- SQL_IDcondition
- 可変条件に設定される条件をもつオブジェクト- Returns:
- Statementオブジェクト
- See Also:
-
prepareParameterizedSqlStatementBySqlId
public ParameterizedSqlPStatement prepareParameterizedSqlStatementBySqlId(String sqlId, Object condition, SelectOption selectOption) Description copied from interface:AppDbConnection
検索範囲を設定した名前付きパラメータをもつ可変条件SQL文実行用のStatementオブジェクトをSQL_IDを元に生成する。 Statementオブジェクトは、TransactionManagerConnection.terminate()
メソッドで自動的にクローズされるため、 アプリケーションは、取得したStatementオブジェクトを明示的にクローズする必要はない。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、名前付きパラメータをもつSQL文専用である。 このため、通常のバインド変数(バインド変数を「?」で表すもの)をもつSQL文の場合は、 本メソッドで生成したParameterizedSqlPStatement
では処理できないことに注意すること。 注意:本メソッドで返却されるParameterizedSqlPStatement
は、あらかじめ検索範囲が設定されているため、ParameterizedSqlPStatement.retrieve(int, int, Object)
のような、検索範囲を指定した簡易検索処理は実行できない。- Specified by:
prepareParameterizedSqlStatementBySqlId
in interfaceAppDbConnection
- Parameters:
sqlId
- SQL_IDcondition
- 可変条件に設定される条件をもつオブジェクトselectOption
- 検索処理オプション- Returns:
- Statementオブジェクト
- See Also:
-
prepareParameterizedCountSqlStatementBySqlId
public ParameterizedSqlPStatement prepareParameterizedCountSqlStatementBySqlId(String sqlId, Object condition) SQL_IDを元に件数取得(カウント)用のStatementオブジェクトを生成する。 SQL文を件数取得(カウント)用に変換すること以外は、AppDbConnection.prepareParameterizedSqlStatementBySqlId(String, Object)
と同じ処理を行う。 件数取得用のSQLへの変換は、Dialect.convertCountSql(String, Object, StatementFactory)
で行う。- Specified by:
prepareParameterizedCountSqlStatementBySqlId
in interfaceAppDbConnection
- Parameters:
sqlId
- SQL_IDcondition
- 可変条件に設定される条件をもつオブジェクト- Returns:
- Statementオブジェクト
- See Also:
-
prepareCountStatementBySqlId
SQL_IDを元に件数取得(カウント)用のStatementオブジェクトを生成する。 SQL文を件数取得(カウント)用に変換すること以外は、AppDbConnection.prepareStatementBySqlId(String)
と同じ処理を行う。 件数取得用のSQLへの変換は、Dialect.convertCountSql(String, Object, StatementFactory)
で行う。- Specified by:
prepareCountStatementBySqlId
in interfaceAppDbConnection
- Parameters:
sqlId
- SQL_ID- Returns:
- Statementオブジェクト
- See Also:
-
prepareCall
Description copied from interface:AppDbConnection
ストアドプロシージャ実行用のStatementオブジェクトを生成する。- Specified by:
prepareCall
in interfaceAppDbConnection
- Parameters:
sql
- SQL文- Returns:
- Statementオブジェクト
- See Also:
-
prepareCallBySqlId
Description copied from interface:AppDbConnection
ストアドプロシージャ実行用のStatementオブジェクトをSQL_IDを元に生成する。- Specified by:
prepareCallBySqlId
in interfaceAppDbConnection
- Parameters:
sqlId
- SQL_ID- Returns:
- Statementオブジェクト
- See Also:
-
closeStatements
public void closeStatements()ステートメントをクローズする。
本データベースオブジェクトから生成されたステートメントオブジェクトを一括でクローズする。 -
setFactory
StatementFactory
実装クラスを設定する。- Parameters:
factory
-StatementFactory
実装クラス
-
setStatementReuse
public void setStatementReuse(boolean statementReuse) ステートメントのキャッシュ有無を設定する。- Parameters:
statementReuse
- ステートメントのキャッシュ有無
-
setDbAccessExceptionFactory
DbAccessException
ファクトリオブジェクトを設定する。- Parameters:
dbAccessExceptionFactory
-DbAccessException
ファクトリオブジェクト
-
setJdbcTransactionTimeoutHandler
public void setJdbcTransactionTimeoutHandler(JdbcTransactionTimeoutHandler jdbcTransactionTimeoutHandler) Description copied from interface:TransactionManagerConnection
トランザクションタイムアウトハンドラを設定する。- Specified by:
setJdbcTransactionTimeoutHandler
in interfaceTransactionManagerConnection
- Parameters:
jdbcTransactionTimeoutHandler
- トランザクションタイムアウトハンドラ
-
getConnection
Description copied from interface:TransactionManagerConnection
データベース接続オブジェクトを取得する。- Specified by:
getConnection
in interfaceTransactionManagerConnection
- Returns:
- データベース接続オブジェクト
-
getDialect
Description copied from interface:TransactionManagerConnection
コネクションのDefaultDialect
を取得する。- Specified by:
getDialect
in interfaceTransactionManagerConnection
- Returns:
- SQL方言
-
setContext
コンテキストを設定する。- Parameters:
context
- コンテキスト
-
removeStatement
Description copied from interface:TransactionManagerConnection
保持しているStatementを削除する。- Specified by:
removeStatement
in interfaceTransactionManagerConnection
- Parameters:
statement
- 削除対象のステートメント
-