BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Javaトランザクションモデルをベースにしたトランザクション戦略

Javaトランザクションモデルをベースにしたトランザクション戦略

原文(投稿日:2009/4/6)へのリンク

トランザクションの概念は、データの完全性および整合性を確保するためには不可欠である。トランザクションを完全に理解するためには、基本、モデルおよび 戦略に精通している必要がある。Mark Richards氏は「トランザクションモデルとトランザクション戦略を混同するのは、ありふれたミスである」。この記事(リンク)は「Javaプラットフォームに よってサポートされる3つのトランザクションモデル」を取り上げ、こうしたモデルを使用する4つの主要なトランザクション戦略を紹介する。Spring FrameworkおよびEnterprise JavaBeans (EJB) 3.0のスペックからの例を使用して、Markはトランザクションモデルの動作方法および、基本的なトランザクション処理から高速トランザクション処理システムに至るトランザクション戦略を開発するための基礎を形成する方法を説明している。

Javaプラットフォームは、以下の3つのトランザクションモデルをサポートする。

  • Local Transactionモデル-トランザクションはDBリソースによって管理され、アプリケーションコンテナまたはフレームワークには存在しない。デベロッパはトランザクションよりもむしろコネクションを管理する。
  • Programmatic Transactionモデル-プログラマはトランザクションマネージャからトランザクションを獲得しなけらばならないが、開始、コミット、例外、トランザクションのロールバックのために独自のコードを記述しなければならない。
  • Declarative Transactionモデル-もっとも一般的なモデルであり、Container Managed Transactionとしても知られる。このモデルでは、コンテナが前向きにトランザクションを管理し、デベロッパはトランザクションの振る舞いやパラ メータを定義(宣言)する。

しかし、このサポートはトランザクションおよび予想される振る舞いに制限される。つまり、実装や使用するルールや構文の記述である。トランザクション戦略 は、以下のような質問に答える必要がある。「REQUIRED対MANDATORY属性、具体的な命令、あるモデル対別のモデルをいつ使用すべきか、また は特定の状況を最適化する方法は?」

トランザクションモデルのメリットおよび落とし穴(リンク)については、Mark氏による以前の記事で議論されている。

具体的なモデルを使用したり、適切な方法で任意のモデルを使用するための戦略がこの記事に紹介されている。提示されている4つの戦略は以下のとおりである。

  • 「クライアントレイヤーからの複数のサーバベースまたはモデルベースの呼び出しが1つの作業単位を完了するとき、Client Orchestrationトランザクション戦略が使用される。
  • バックエンド機能に対する主要なエントリポイントとして機能する粗粒のメソッドがある場合、API Layerトランザクション戦略が使用される。
  • API Layerトランザクション戦略のバリエーションである、High Concurrencyトランザクション戦略はAPI層から長期実行トランザクションをサポートすることができないアプリケーションに使用される(通常 は、パフォーマンスや拡張可能性が必要なため)。
  • おそらくHigh-Speed Processingトランザクション戦略は、トランザクション戦略のもっとも極端なものである。まったく可能な高速処理時間が必要な場合に使用し、それ ゆえアプリケーションから(全体を通じて)、処理におけるある程度のアトミック性を保つことができる。

Mark Richards氏はInfoQミニブックJava Transaction Design Strategies(参考記事・英語)の著者であり、この重要なトピックの追加の背景情報を提供している。

関連するコンテンツ

BT