Spring Framework
Spring のトランザクション管理フレームワークは、Javaプラットフォームに抽象化機構をもたらす。以下のような抽象化が可能である。
ローカルなトランザクションとグローバルなトランザクションの抽象化(ローカルなトランザクションにはアプリケーションサーバは不要)
入れ子になったトランザクションの抽象化
トランザクションのセーフポイントの抽象化
ほとんど全てのJavaプラットフォーム環境での抽象化
JTAと比較すると、JTAは入れ子とグローバルのトランザクションのみをサポートしており、アプリケーションサーバが必須である(場合によっては、アプリケーションサーバへのアプリケーションの配備も必要)。
Spring Framework には、以下のようなトランザクション管理戦略のための PlatformTransactionManager がある。
JDBCの Connection
オブジェクト関係マッピングの Units of Work
JTAの TransactionManager と UserTransaction
その他(例えばオブジェクトデータベース)
抽象化機構以外にこのフレームワークは、アプリケーションにトランザクション管理機能を付与する2つの方法を提供する。
プログラミング。Spring の TransactionTemplate を使う。
コンフィギュレーション。XMLあるいは Java 5 の注釈のようなメタデータを使う。
Spring のデータアクセスフレームワークと共に使うことで、JTAやEJBを使わずにトランザクションシステムのコンフィギュレーションによる設定が可能である。Java Message Service やキャッシュエンジンとも連携できる。
Spring Framework は、様々なサービスを提供する幾つかのモジュールから構成されている。
制御の反転コンテナ: 主に依存性の注入によって、アプリケーションのコンポーネント配置とJavaオブジェクトのライフサイクルを管理
アスペクト指向プログラミング: クラス横断的な処理の実装を可能とする
データアクセス: JDBCとオブジェクト関係マッピングツールを用い、Javaプラットフォーム上でRDBアクセス機能を提供。また、NoSQL系データベースもサポート
トランザクション管理: 各種トランザクション制御APIを統合し、Javaオブジェクトのトランザクション管理を提供
Model View Controller: HTTPとServletベースのフレームワークで、WebアプリやREST準拠Webサービスの拡張とカスタマイズのためのフックを多数提供している。
リモートアクセスフレームワーク: 利用者の定義に従い、遠隔手続き呼出し (RPC) の形態でJavaオブジェクトをネットワーク上でインポートまたはエクスポートする。
Spring のデータアクセスフレームワークは、アプリケーションからデータベースを利用しようとしたときに開発者が直面する課題に対処する。Javaにおける主要なデータアクセスのフレームワークを全て提供している。すなわち、JDBC、iBATIS、Hibernate、JDO、JPA、Oracle en:TopLink、Apache en:Ojb、en:Apache Cayenne などである。
これらのフレームワークについて、Spring は以下の機能を提供する。
リソース管理 - データベースのリソースの自動的な獲得・解放
例外処理 - データアクセス時の例外を Spring のデータアクセス階層に変換
トランザクション参加 - 実行中トランザクションへのトランザクション参加
リソース・アンラッピング - コネクションプール・ラッパーからデータベースオブジェクトを取り出す。