2011-01-18 5 views

答えて

3

TRANSACTION_NONEは、接続がトランザクションをまったくサポートしていないことを意味し、その接続にトランザクションセマンティクスを課す試みは失敗するはずです。おそらくあなたがCSVファイルのような "偽の"データベースを使っている場合を除いて、私はこれが今まで有用であるとは思えません。一方、接続がトランザクションを使用しており、他の接続のコミットされていないトランザクションからデータを読み取ることができることを意味します。 @Paxによると、これは非常に慎重に使用する必要があります。

も注意setTransactionIsolation方法:それはトランザクションがサポートされていないことを指定するために使用することはできません

Connection.TRANSACTION_NONEこと。

TRANSACTION_NONEを強制的に使用することはできません。接続はトランザクションをサポートするか、サポートしていないか、サポートしていません。

READ_UNCOMMITTEDはまだ取引中であることを意味します。それでもアトミック書き込みは得られますが、それ以外のトランザクションは書き込みから分離されます。しかし、あなたの取引は他の人から分離されていません。 TRANSACTION_NONEは無料です。だれからも隔離されません。

+0

あなたが言うことは本当ですが、質問に答えません。 READ_UNCOMMITTEDとは何ですか?TRANSACTION_NONEから隔離されていませんか? – Gili

+0

@ギリ:私はそう思った。 'READ_UNCOMMITTED'は依然としてあなたがトランザクション中であることを意味します。それでもアトミック書き込みは得られますが、それ以外のトランザクションは書き込みから分離されます。しかし、あなたの取引は他の人から分離されていません。 'TRANSACTION_NONE'は無料です。誰も何の関係もないからです。 – skaffman

+0

すばらしい答え!上記の回答にあなたが書き込んだものを追加すると、それを受け入れたものとしてマークします。 – Gili

0

READ_UNCOMMITTEDの違いを理解しようとしている(またはダーティ・リード)あなたを完了することは至っていないトランザクションに関する情報を提供します。

取得された情報に一貫性がないため、通常はお勧めできません。わずかなデータは問題にならない報告アプリケーションではデッドロックを回避するために使用していますが、正確性(人の金銭や銀行に課金するなど)を気にしていれば、私はしません。

トランザクション外でSQLを実行しています(私はここでの更新を前提としています)。 ACIDの要件は、一般的に最も簡単な更新であってもトランザクションを必要とします。トランザクションを明示的に開始またはコミットすることはできませんが、少なくとも適切なリレーショナルDBMSの場合は保証されます。

+0

http://download.oracle.com/javase/6/docs/api/java/sql/Connection.html#TRANSACTION_NONEにはどのようなマップがありますか? – Gili

関連する問題