多層アプリケーションでのトランザクション管理

提供: RAD Studio
移動先: 案内検索

多層アプリケーションの作成:インデックス への移動

クライアント アプリケーションがアプリケーション サーバーに更新を適用する際、プロバイダ コンポーネントは、更新を適用し、エラーを解決するプロセスを、自動的に 1 つのトランザクション内に取り込みます。このトランザクションは、問題レコードの件数が、ApplyUpdates メソッドへの引数で指定される、MaxErrors 値を超えなかった場合にコミットされます。そうでなければ、ロールバックされます。

また、トランザクション サポートをサーバー アプリケーションに追加するには、データベース接続コンポーネントを追加するか、SQL をデータベース サーバーに送って直接トランザクションを管理を行います。これは、2 層アプリケーションでトランザクションを管理するのと同様に動作します。この一連のトランザクション制御の詳細については、「トランザクションの管理」を参照してください。

トランザクション データ モジュールを使用する場合、COM+ (または MTS) トランザクションを利用することにより、トランザクション サポートを拡張することができます。これらトランザクションは、データベース アクセスだけでなく、アプリケーション サーバー上のビジネス ロジックを含むことができます。また、2 相コミットをサポートしているため、複数のデータベースに渡ることも可能です。

BDE ベースおよび ADO ベースのデータ アクセス コンポーネントのみが、2 相コミットをサポートしています。複数のデータベースに渡るトランザクションの場合には、InterbaseExpress または dbExpress のコンポーネントを使用しないでください。

デフォルトでは、トランザクション データ モジュールに対するすべての IAppServer 呼び出しが、トランザクション対応になっています。このため必要な作業は、アプリケーション サーバーのインターフェイスを拡張して、自分が定義したトランザクションをカプセル化するメソッド呼び出しを入れるだけです。

トランザクション属性が、リモート データ モジュールにトランザクションが必須であると示してある場合、クライアントがそのインターフェイスに対してメソッドを呼び出すたびに、それはトランザクション内に自動的にラッピングされます。アプリケーション サーバーに対するすべてのクライアント呼び出しは、トランザクション完了の指示があるまで、トランザクション内にリスト化されていきます。これらの呼び出しは、まとまった全体として成功するか、すべてロールバックされるかのどちらかになります。

メモ: COM+ や MTS トランザクションを、データベース接続コンポーネントや SQL コマンドの明示的呼び出しによって作成された明示的トランザクションを、組み合わせないでください。トランザクション データ モジュールがトランザクション内にリストされると、そのデータベース呼び出しもすべて同様に、そのトランザクション内に自動的にリストされます。

関連項目