0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Service layerの分離(ビジネスロジックの分離)ー@Service、@Transactional

0
Posted at

@Serviceと@Transactionalについて勉強しましたので書きます。


@Service

Service layerで使用されるAnnotationで、これを使用することで、該当のクラスがService layerクラスであることを明確にする


@Transaction

クラスやメソッドに貼り付け、該当範囲内のメソッドがTxになることを意味する


属性

  1. propagation:Txの境界(Boundary)を設定する方法を指定
    ① REQUIRED - Txが実行中であれば参加、実行中でなければ「新しいTx」を開始
    ② REQUIRES_NEW - Txが実行しているかどうかにかかわらず「新しいTx」を開始
    ③ NESTED - Txが実行中であればそのTxの内部に「subTx」を開始
          新しいTxの開始ではないことが① 、②との違い
    ④ MANDATORY - 必ず実行中のTx内でのみ実行可能で、そうでなければ例外発生
    ⑤ SUPPORTS - Txが実行中であるかどうかにかかわらず実行
    ⑥ NOT_SUPPORTED - Txなしで処理。Txが実行中の場合、しばらく中断(suspend)
    ⑦ NEVER - Txなしの処理。Txが実行中の場合、例外発生

  2. isolation:Txのisolation levelを指定

  3. readOnly:Txがデータを読み取るのみの場合、trueに指定するとパフォーマンスが向上

  4. rollbackFor:指定された例外が発生したときにTxをrollback。
         例外的に、RuntimeExceptionとErrorは自動ロールバック

  5. norollbackFor:指定された例外が発生してもTxをrollbackしない

  6. timeout:指定された時間(秒)以内にTxが終了しない場合、Txを強制終了させる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?