Springの@Transactionalアノテーションの使い方はどうですか?
Springの@Transactional注釈は、トランザクションの動作を宣言するために使用することができます。それはクラスレベルやメソッドレベルで使用することができます。
@Transactionalアノテーションをクラスレベルで使用すると、そのクラスのすべてのパブリックメソッドがトランザクションに追加されることを意味します。以下はコード例です:
@Transactional
public class MyClass {
// methods
}
@Transactionalアノテーションを使用して、メソッドレベルでトランザクションを適用することを示します。以下はコード例です。
public class MyClass {
@Transactional
public void myMethod() {
// method body
}
}
@Transactionalアノテーションには、トランザクションの属性を設定するためのいくつかのパラメーターを指定することもできます。例えば、トランザクションの分離レベル、伝播動作、タイムアウトなどがあります。よく使われるパラメーターは以下の通りです。
- 孤立:指定トランザクションの分離レベル、デフォルトはDEFAULT。
- 伝播:指定されたトランザクションの伝播動作。デフォルトはREQUIRED。
- readOnly:指定されたトランザクションが読み取り専用トランザクションであるかどうかを示します。デフォルトはfalseです。
- タイムアウト:指定したトランザクションのタイムアウト時間、デフォルトは-1で、タイムアウト制限はありません。
- rollbackForは、どの例外が発生したときにトランザクションをロールバックさせるかを指定します。
- noRollbackFor:特定の例外が発生した場合にトランザクションのロールバックを行わないように指定します。
以下はサンプルコードです。
@Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED, readOnly = false, timeout = 60, rollbackFor = Exception.class)
public void myMethod() {
// method body
}
Springの設定ファイルで@Transactional注釈を使用する場合は、@EnableTransactionManagement注釈を追加したり、tx:annotation-drivenを設定する必要があります。