2017-07-07 11 views
1

Oracleデータベースに情報を入力する必要があります。それらのうちのいくつかは複雑(配列の配列)なので、PL/SQL関数に渡すことはできません。 1つのクエリを使用してすべてのデータを挿入することはできません。複数のテーブルにもデータを挿入する必要があります。しかし、挿入が一度テーブルに失敗した場合は、挿入プロセス全体をロールバックする必要があります。だから私はトランザクションを使用する必要があります。oracleデータベースのトランザクションをJavaバックエンドから使用する方法は?

私はjavaコードを使用しており、PreparedStatement,、CallableStatementおよびその他の関連するものは、私のJavaバックエンドからデータベース操作を実行しています。このJavaバックエンドからトランザクションを定義して使用するにはどうすればよいですか?基本的に私はSpring MVCを使用しています。

N.B.いいえHibernate関連するソリューションをしてください。

+0

を使用していない場合は、[JDBC(TM)データベースアクセスチュートリアル](https://docs.oracle.com/javase/tutorial/をお読みくださいjdbc /)、特にこの章:[トランザクションの使用](https://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html) – krokodilko

答えて

3

インスタンスを取得した直後にConnection.setAutoComit(false)を使用してください。

これは、あなたの接続を非自動コミットトランザクションにします。

参照:http://docs.oracle.com/javase/8/docs/api/java/sql/Connection.html#setAutoCommit-boolean-

+0

Javaコードからトランザクションが成功した後、どのようにコミットしますか? –

+0

'Connection.close()'がコミットすると、スローされた例外がロールバックされます。 –

+0

ああ、 'Connection.commit()'と 'Connection.rollback()'メソッドもあります... –

1

は、Java 8を参照してくださいオラクルfull explanation

+0

私はJava 8を使用しています。これはJava 8で正しく動作するでしょうか? –

+1

はい。これはより一般的な説明です – user7294900

関連する問題