一般に、ブロックは、データベースリソースが排他的にロックされていることが原因で発生します。ロックメカニズムおよびSQLのロックは、データベースによってさまざまなので、この問題の一般的な解決方法として、カスタムのDBLockStatementGeneratorクラスを実装します。詳細については、ステートメントジェネレータクラスのロックを参照してください。JDBC用ドライバには、Oracle用のデフォルト実装が含まれています。
ブロックの発生には、多くの要因が考えられます。ブロックが発生する可能性を低減するために、「トランザクション分離レベル」パラメータをread committedより高いレベルに設定しないことをお勧めします。
JDBCインタフェースは、指定した秒数が経過した後にステートメントがタイムアウトできるようにするメソッドjava.sql.Statement.setQueryTimeout(int):voidを定義します。残念ながら、サードパーティ製のJDBCドライバ間では、このメソッドが実装されていなかったりバグがあったりとさまざまです。したがって、このメソッドを一般的な解決策とするのは不適切と判断されました。