アメリカではほとんどデフェクトスタンダードとなっている「」の覚書きです。Spring は簡単に言うと、IoC (制御の反転)、またの名を DI (依存性注入) という仕組みを取り入れた軽量コンテナです。
Springはとても抽象化した方法で、トランザクション管理を行います。抽象化というのは実装に依存していないという意味です。アプリケーションサーバが持つトランザクション機能や、 JDBCのようなリソースを使った DataSource に関しても、共通の方法でトランザクション管理を提供しています。
Springの詳細については、ほかにもっとよいサイト(Springフレームワークの紹介)があるので、そちらを参考にしてください。ここでは、Springを使っていて、ハマった点や気になった点などをメモしていこうと思います。随時更新していくつもりです。間違っている可能性が高いので、気になる点があればコメントをお願いします。
参考
トランザクション管理
トランザクション管理機能
Springのトランザクション機能は、トランザクションマネジャというものが管理します。マネジャの設定もBean定義書で行います。Springのトランザクションマネジャは、JTA をサポートしていない DataSource に対しても宣言的なトランザクションをかけることが出来る。
宣言的なトランザクションとは、トランザクション境界(トランザクションの開始と終了)を宣言して、POJO のメソッドにトランザクション処理を行うことが出来るものです。例外が発生した場合に自動的にロールバックを行わせるものだと考えてください。
[参考]
Spring Pad - TransactionProxyFactoryBean
org.springframework.transaction.PlatformTransactionManager
Springのトランザクションマネジャの基本インターフェースのようです。
- グローバルトランザクション
- リソースを使わないトランザクション。JTAを使ってアプリケーションサーバが処理します。
- ローカルトランザクション
- JDBCなどのリソースを使用したトランザクション処理。
Springは、グローバルトランザクションとローカルトランザクションを透過的に扱うためにこのインターフェースを用意しています。
org.springframework.transaction.TransactionDefinition
トランザクション設定を定義するインターフェース
- PROPAGATION_REQUIRED
- トランザクションを実行する。
- PROPAGATION_REQUIRES_NEW
- メソッド呼出し毎に新しいトランザクションを実行する。
- PROPAGATION_MANDATORY
- トランザクションを開始している必要がある。
- PROPAGATION_NOT_SUPPORTED
- トランザクションの開始に関わらず、メソッド呼び出しはトランザクションに含まれない。
- PROPAGATION_SUPPORTS
- トランザクションが開始されていれば、メソッドが実行される。開始されていなければ実行されない。
- PROPAGATION_NEVER
- トランザクションに参加しない。
コミット対象にする例外を追加するには、トランザクション属性に 「+《例外の型》」 をつける。ロールバック対象の例外を追加するには 「-《例外の型》」 をつける。
PROPAGATION_REQUIRED, +java.io.IOException
org.springframework.jdbc.datasource.DataSourceTransactionManager
一つのDataSourceのためのトランザクション実装です。DataSourceごとに一つのスレッドが対応します。JDBCのConnectionを利用してトランザクションを制御します。
参考
Spring Framework の本家です。 Spring Framework
Spring Framework の 日本語 Wiki です。大量の情報があります。 Spring Pad
Spring-Java/J2EEアプリケーションフレームワークリファレンスドキュメント (日本語訳) Spring-Java/J2EEアプリケーションフレームワークドキュメント
Spring フレームワークに関しての概要です。TECHSCORE さんの記事は読みやすいなぁ (^^ ; TECHSCORE - Spring Framework
Spring を含めた、軽量コンポーネントのお話です。
- Spring の ロッドジョンソンが贈る、J2EE技術者のためのバイブル
- Spring のロッドジョンソンによる Spring ユーザのための本 (洋書)
- SpringでWebアプリケーションを作りながら、Springの全体像がわかりやすく解説されています。