public abstract class RdbmsOperation extends java.lang.Object implements InitializingBean
このクラスとサブクラスは、org.springframework.dao
パッケージで定義されたランタイム例外をスローします(org.springframework.jdbc.core
パッケージによってスローされたものであり、このパッケージのクラスが内部 JDBC オペレーションを実行するために内部で使用します)。
サブクラスは、compile()
メソッドを呼び出す前に SQL を設定し、パラメーターを追加する必要があります。パラメーターが追加される順序は重要です。その後、適切な execute
または update
メソッドを呼び出すことができます。
SqlQuery
, SqlUpdate
, StoredProcedure
, JdbcTemplate
コンストラクターと説明 |
---|
RdbmsOperation() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() Bean ファクトリで使用した場合、コンパイルを保証します。 |
protected boolean | allowsUnusedParameters() この操作が、指定されているが実際には使用されていない追加のパラメーターを受け入れるかどうかを返します。 |
protected void | checkCompiled() この操作がすでにコンパイルされているかどうかを確認します。まだコンパイルされていない場合は、遅延してコンパイルします。 |
void | compile() このクエリをコンパイルします。 |
protected abstract void | compileInternal() サブクラスは、独自のコンパイルを実行するためにこのテンプレートメソッドを実装する必要があります。 |
void | declareParameter(SqlParameter param) この操作のパラメーターを宣言します。 |
protected java.util.List<SqlParameter> | getDeclaredParameters() 宣言された SqlParameter オブジェクトのリストを返します。 |
java.lang.String[] | getGeneratedKeysColumnNames() 自動生成されたキーの列名を返します。 |
JdbcTemplate | getJdbcTemplate() この操作オブジェクトが使用する JdbcTemplate を返します。 |
int | getResultSetType() ステートメントが特定の型の ResultSet を返すかどうかを返します。 |
java.lang.String | getSql() サブクラスは、必要に応じてこれをオーバーライドして動的 SQL を提供できますが、SQL は通常、 setSql(java.lang.String) メソッドを呼び出すか、サブクラスコンストラクターで設定されます。 |
boolean | isCompiled() この操作は「コンパイル」されていますか? JDO の場合と同様に、コンパイルとは、操作が完全に構成され、使用する準備ができていることを意味します。 |
boolean | isReturnGeneratedKeys() ステートメントが自動生成キーを返すことができるかどうかを返します。 |
boolean | isUpdatableResults() ステートメントが更新可能な ResultSets を返すかどうかを返します。 |
protected java.lang.String | resolveSql() 実際に使用するために構成済み SQL を解決します。 |
void | setDataSource(javax.sql.DataSource dataSource) 接続を取得する JDBC DataSource を設定します。 |
void | setFetchSize(int fetchSize) この RDBMS 操作のフェッチサイズを設定します。 |
void | setGeneratedKeysColumnNames(java.lang.String... names) 自動生成されたキーの列名を設定します。 |
void | setJdbcTemplate(JdbcTemplate jdbcTemplate) |
void | setMaxRows(int maxRows) この RDBMS 操作の最大行数を設定します。 |
void | setParameters(SqlParameter... parameters) 1 つ以上の宣言されたパラメーターを追加します。 |
void | setQueryTimeout(int queryTimeout) この RDBMS 操作が実行するステートメントのクエリタイムアウトを設定します。 |
void | setResultSetType(int resultSetType) 特定の型の ResultSet を返すステートメントを使用するかどうかを設定します。 |
void | setReturnGeneratedKeys(boolean returnGeneratedKeys) 準備されたステートメントが自動生成キーを返すことができるかどうかを設定します。 |
void | setSql(java.lang.String sql) この操作によって実行される SQL を設定します。 |
void | setTypes(int[] types) java.sql.Types クラスで定義されている SQL 型のみを指定して、匿名パラメーターを追加します。 |
void | setUpdatableResults(boolean updatableResults) 更新可能な ResultSets を返すことができるステートメントを使用するかどうかを設定します。 |
protected boolean | supportsLobParameters() この種類の操作で BLOB/CLOB パラメーターがサポートされているかどうかを返します。 |
protected void | validateNamedParameters(java.util.Map<java.lang.String,?> parameters) 宣言されたパラメーターに基づいて、execute メソッドに渡された名前付きパラメーターを検証します。 |
protected void | validateParameters(java.lang.Object[] parameters) 宣言されたパラメーターに基づいて、execute メソッドに渡されたパラメーターを検証します。 |
protected final Log logger
public void setJdbcTemplate(JdbcTemplate jdbcTemplate)
RdbmsOperations
で同じ JdbcTemplate
を使用する場合に、より一般的に使用される setDataSource(javax.sql.DataSource)
の代替。これは、JdbcTemplate
に SQLExceptionTranslator
などの特別な構成があり、再利用する場合に適しています。public JdbcTemplate getJdbcTemplate()
JdbcTemplate
を返します。public void setDataSource(javax.sql.DataSource dataSource)
DataSource
を設定します。public void setFetchSize(int fetchSize)
デフォルトは 0 で、ドライバーのデフォルトを使用することを示します。
public void setMaxRows(int maxRows)
デフォルトは 0 で、ドライバーのデフォルトを使用することを示します。
public void setQueryTimeout(int queryTimeout)
デフォルトは 0 で、JDBC ドライバーのデフォルトを使用することを示します。
メモ: ここで指定されたタイムアウトは、トランザクションレベルで指定されたタイムアウトを持つトランザクション内で実行すると、残りのトランザクションタイムアウトによってオーバーライドされます。
public void setResultSetType(int resultSetType)
resultSetType
- ResultSet 型 ResultSet.TYPE_FORWARD_ONLY
、ResultSet.TYPE_SCROLL_INSENSITIVE
、ResultSet.TYPE_SCROLL_SENSITIVE
、Connection.prepareStatement(String, int, int)
public int getResultSetType()
public void setUpdatableResults(boolean updatableResults)
Connection.prepareStatement(String, int, int)
public boolean isUpdatableResults()
public void setReturnGeneratedKeys(boolean returnGeneratedKeys)
Connection.prepareStatement(String, int)
public boolean isReturnGeneratedKeys()
public void setGeneratedKeysColumnNames(java.lang.String... names)
Connection.prepareStatement(String, String[])
@Nullable public java.lang.String[] getGeneratedKeysColumnNames()
public void setSql(java.lang.String sql)
@Nullable public java.lang.String getSql()
setSql(java.lang.String)
メソッドを呼び出すか、サブクラスコンストラクターで設定されます。protected java.lang.String resolveSql()
null
)public void setTypes(@Nullable int[] types) throws InvalidDataAccessApiUsageException
java.sql.Types
クラスで定義されている SQL 型のみを指定して、匿名パラメーターを追加します。 パラメーターの順序は重要です。このメソッドは、declareParameter(org.springframework.jdbc.core.SqlParameter)
メソッドの代替であり、通常は推奨されます。
types
- java.sql.Types
クラスで定義されている SQL 型の配列 InvalidDataAccessApiUsageException
- 操作がすでにコンパイルされている場合 public void declareParameter(SqlParameter param) throws InvalidDataAccessApiUsageException
位置パラメーターを使用する場合、このメソッドが呼び出される順序は重要です。ここで、名前付き SqlParameter オブジェクトで名前付きパラメーターを使用する場合は重要ではありません。ここで、名前のないパラメーターを名前のない SqlParameter オブジェクトと組み合わせて使用する場合も、重要です。
param
- 追加する SqlParameter これは、SQL 型と(オプションで)パラメーターの名前を指定します。ここでは通常、SqlParameter
クラス自体を使用し、そのサブクラスは使用しないことに注意してください。InvalidDataAccessApiUsageException
- 操作がすでにコンパイルされているため、それ以上構成できない場合 public void setParameters(SqlParameter... parameters)
parameters
- 宣言された SqlParameter
オブジェクトを含む配列 declaredParameters
protected java.util.List<SqlParameter> getDeclaredParameters()
SqlParameter
オブジェクトのリストを返します。public void afterPropertiesSet()
InitializingBean
の afterPropertiesSet
public final void compile() throws InvalidDataAccessApiUsageException
InvalidDataAccessApiUsageException
- オブジェクトが正しく初期化されていない場合(DataSource が提供されていない場合など)public boolean isCompiled()
protected void checkCompiled()
validateParameters
によって自動的に呼び出されます。
protected void validateParameters(@Nullable java.lang.Object[] parameters) throws InvalidDataAccessApiUsageException
executeQuery()
または update()
メソッドの前にこのメソッドを呼び出す必要があります。parameters
- 提供されるパラメーター (null
の場合があります)InvalidDataAccessApiUsageException
- パラメーターが無効な場合 protected void validateNamedParameters(@Nullable java.util.Map<java.lang.String,?> parameters) throws InvalidDataAccessApiUsageException
executeQuery()
または update()
メソッドの前にこのメソッドを呼び出す必要があります。parameters
- 提供されるパラメーターマップ (null
の場合があります)InvalidDataAccessApiUsageException
- パラメーターが無効な場合 protected abstract void compileInternal() throws InvalidDataAccessApiUsageException
サブクラスは、SQL と DataSource が提供されていると想定できます。
InvalidDataAccessApiUsageException
- サブクラスが適切に構成されていない場合 protected boolean supportsLobParameters()
デフォルトは true
です。
protected boolean allowsUnusedParameters()
デフォルトは false
です。
StoredProcedure