6

私は、あらゆる種類のデータベースで動作する一般的な jdbc コードを持っています。トランザクションとセーブポイントで動作する API がいくつかあります。

問題は、一部のデータベースではセーブポイントを手動で解放する必要があることです

 conn.releaseSavepoint(savepoint1) 

また、手動リリースを行うときに例外をスローするものもあります (最も顕著なのは Oracle)。

データベースに自動セーブポイントのリリースがあるかどうか、または手動で行う必要があるかどうかを実行時に確認するにはどうすればよいですか。そしてpls、私はいくつかの素晴らしいAPIを持っています。私は例外をキャッチしたくありません。この場合、それは醜く、エラーが発生しやすいです。スローされる例外はjava.sql.SqlExceptionであり、「FeatureUnsupportedException」のようなものではありません。したがって、実際のエラーがあり、愚かにもそれを見つけた場合、トランザクション全体で完全に失敗する可能性があります。

ありがとう

4

2 に答える 2

5

Oracle の 10g ドキュメントで、この特定の JDBC / ojdbc メソッドがサポートされていないという事実を見つけることができました。

注: Oracle Database 10g では、releaseSavepoint と oracleReleaseSavepoint はサポートされていません。いずれかのメソッドを呼び出すと、「サポートされていない機能」というメッセージとともに SQLException がスローされます。

11gでは、ドキュメントは別の方法で主張しているようです:

Connection.releaseSavepoint(Savepoint svpt) メソッドを使用してセーブポイントを削除します。

しかし、11g でも問題を簡単に再現できます。

于 2014-08-12T09:43:57.553 に答える