問題
トランザクションは、操作シーケンスの1つのステップまたは複数のステップで構成される論理実行ユニットです。トランザクションの4つの特性:原子性、一貫性、等化、耐久性の原子性:トランザクションアプリケーションの最小の実行単位は、分割できません。問題に分かれなくなったのは、最小の論理実行機関です。
一貫性:トランザクションの実行の結果、ある一貫性から別の状態にデータベースを作成する必要があります。
ISOITIES:各トランザクションの実行は干渉されず、他の同時トランザクションの場合、トランザクションの内部操作は分離されます。つまり、相手の中間のステータスは、同時実行の取引の間には見られず、同時実行の問題は互いに影響を受けることはできません。
耐久性:継続性は、トランザクションが送信された後のデータの変更とも呼ばれます。
通常のデータベースに関連する文は次のとおりです。DMLのセット(Data Munipuration Language、Data操作言語)ステートメント、DMLステートメントのセットは、変更後の操作テーブルステートメントを維持します。 ; DDL(データ定義言語、データ定義言語)ステートメント、データオブジェクトの言語は作成、変更、ドロップがあります。データコントロール言語、データ制御言語)ステートメント、主に声明を付与および取り消し声明。 DDLおよびDCLステートメントは、すぐにトランザクションを提出するため、せいぜい利用可能であることができます。オフィスに含まれるすべてのデータベース操作が正常に実装されている場合、これらの変更を永久に効果的にするためにトランザクションを提出する必要があります。トランザクションの送信には2つの方法があります。表示の提出と自動提出。ディスプレイの提出:コミットを使用して自動送信を送信します:DLLまたはDCLを実行するか、プログラムがトランザクションに含まれるデータベースのデータベース操作実行から撤回されます。トランザクションのすべての変更が失敗するようにロールバックする必要があります。トランザクションをロールするには、ロールバックと自動ロールバックの表示方法が2つあります。ロールバックを表示:ロールバックを使用して自動的にロールバック:システムエラーまたは強制的に終了します。
トランザクションの同時処理の可能な問題
1。ダーティリード:1つのトランザクションが別のトランザクションによって送信されていないデータを読み取ります
2。非再報告不可能な読み取り:あるトランザクションの操作により、異なるデータが次々に2回読み取られます
3。Phantom読み取り:あるトランザクションの操作は、2つのクエリの結果の結果の結果につながり、次々と
例:
トランザクションAとBの実行中:
Java JDBCトランザクションメカニズム
java.sql.sql.preparedStatementのインポート最終的な文字列= "123456"(int id){connect conn = null;文字列QuerysQl = "Class.forname(com.mysql.jdbc.driver"); pstmtupdateの操作(updatesql) )pstmtupdate.close(); }最後に{try {if(pstmtupdate!= null){pstmtupdate.close();} if(pstmtqury!= null){pstmtqury.close();} if(con!= null){conn.cl ose(ose)(ose) ;}} catch(sqlexception e2){}}}}}
JDBCの問題
JDBCの接続は、デフォルト、つまり密接なものを開きます。言い換えれば、各SQLステートメントの実行はすぐにデータベースに提出されます。これは永久に効果的で操作できません。接続の自動送信を閉じて、物事を開始します。 setautocommitの接続方法は、connection.setautocommit(false);物事をオンにすると、現在の接続で完了したデータベース操作はすぐにデータベースに送信されず、接続のコミット方法を呼び出す必要があります。ステートメントの失敗がある場合は、ロールバックを前後に呼び出すことができます。注:接続が未処理のsqlexception異常に遭遇した場合、システムは異常に終了し、システムは自動的にトランザクションをロールバックします。プログラムがこの異常をキャプチャする場合、異常な治療でロールバックトランザクションを表示する必要があります。接続は、トランザクションの中央に保存ポイントを設定する方法を提供します。SetSavePointを設定するには、SavePoint SetSavePoint()を設定します。ポイント。 SavePoint SetSavePoint(文字列名):現在のトランザクションに指定された名前を作成し、一般的にSetSavePoint(文字列名)を返しますミドルポイントオブジェクトによると。設定名は、中間点オブジェクトをよりよく区別します。
JDBCのトランザクションに対するサポートは、3つの側面に反映されています。
1。自動コンポムモード
接続は、トランザクションが終了した時期を指定する自動コミットプロパティを提供します
2.自動コミットがTRUEである場合、各独立したSQL操作の実行が完了すると、トランザクションがすぐに送信されます。つまり、各SQL操作はトランザクションです。
独立したSQL操作が計算される場合、JDBC仕様は次のように定義されています。
データ操作言語(DML)とデータ定義言語(DDL)の場合、文が実行されたらすぐに
3.自動コミットがfalseの場合、各トランザクションは送信するコールメソッドを表示するか、コールバックメソッドが表示されてロールバックする必要があります。自動コミットデフォルト
トランザクションレベル
JDBCは5つのトランザクションのレベルを定義します::
保存ポイント
JDBCは、SavePointインターフェイスを定義し、より細かい粒度のトランザクション制御メカニズムを提供します。保存ポイントが設定されている場合、ロールバックのトランザクション全体ではなく、保存ポイントでステータスにロールバックできます。この情報は単純なビジネスであるようです。これは非常に簡単に達成できますが、このビジネスはマルチリードの高い成績プラットフォームに配置されている場合、変更後はスレッドも表示されますお問い合わせを実行する前に、修正声明を実行しました。この問題を解決するには、JDBCトランザクションメカニズムを導入する必要があります。