春のトランザクションの伝播方法はどんなものがありますか?
Springで、トランザクションの伝播方法には以下のような種類があります。
- 必須(デフォルト値):現在トランザクションが存在する場合は、それに参加します。現在トランザクションが存在しない場合は、新しいトランザクションを作成します。
- SUPPORTS: 現在トランザクションが存在する場合は、そのトランザクションに参加します。存在しない場合は、非トランザクションモードで実行します。
- 現在、トランザクションが存在している場合はそのトランザクションに参加し、トランザクションが存在していない場合は例外をスローします。
- REQUIRES_NEW:現在のトランザクションの有無にかかわらず、新しいトランザクションを作成します。現在のトランザクションがある場合は、そのトランザクションを一時停止します。
- 非サポート:操作をトランザクションレスモードで実行します。現在トランザクションが存在する場合は、そのトランザクションを一時停止します。
- 絶対に:トランザクション外で操作を実行します。現在、トランザクションが存在している場合は例外をスローします。
- ネスト:現在トランザクションが存在する場合は、その中でネストされたトランザクションを実行します。現在トランザクションが存在しない場合は、新しいトランザクションを作成します。ネストされたトランザクションは、外部トランザクションのコミットやロールバックには影響を与えずに独立してコミットやロールバックが可能です。