Spring中の@Transactionalの使い方は何ですか。
Springでは、@Transactionalアノテーションは、メソッドやクラスがトランザクションマネージャーによって管理されるべきであることを示すために使用されます。このアノテーションが付いたメソッドが呼び出されると、Springは自動的にトランザクションを作成し、メソッドの実行後にコミットまたはロールバックを行います。
@Transactionalアノテーションを使用する際には、メソッドレベルまたはクラスレベルで使用することができます。
- 方法レベルでの使用:
@Transactionalのアノテーションは、直接メソッドに配置することができ、そのメソッドがトランザクションの中で実行されるべきであることを表します。 - @Transactional アノテーションを使用して、ユーザー情報を保存する saveUser メソッドです。userRepository.save(user);
- クラスレベルでの使用:
@Transactionalアノテーションは、クラスの定義にも配置することができ、そのクラス内のすべての公開メソッドがトランザクション内で実行されるべきであることを示します。 - @Transactionalが付いたUserServiceクラスでは、Userオブジェクトを保存するsaveUserメソッドが定義されています。userRepository.save(user)を実行します。
注意点:
- Springでは、標準設定ではメソッドで未処理の例外がスローされた場合、トランザクションはロールバックされます。ロールバックの条件をカスタマイズしたい場合は、@TransactionalアノテーションのrollbackFor属性を使用することができます。
- @Transactionalのアノテーションには、isolation(トランザクションの分離レベル)、propagation(トランザクションの伝播動作)、readOnly(トランザクションが読み取り専用かどうか)など、他のいくつかの属性を指定することができます。必要に応じてこれらの属性を設定することができます。
@Transactionalアノテーションを使用するには、Springの設定ファイルでトランザクションマネージャ(例:DataSourceTransactionManager)を構成し、トランザクション管理(例:@EnableTransactionManagementアノテーション)を有効にする必要があります。
また、`@Transactional`アノテーションのプロパティをクラスレベルやメソッドレベルで使用して、トランザクション制御をより細かく設定することもできます。