「kaz_javaSpringBootプログラム自動作成◎生成ツール」自作SeqServiceImpl.javaトランザクションのpropagation変更
よりよくするための修正 <ーver1.6で修正する予定です。
■SeqServiceImpl.javaのgetDbSeqメソッドの以下を修正する。
1.getDbSeq(String tableId, int keyItemLen, String aAri, int yymmddLen, int count)メソッド
・シーケンス番号を取得するのは別トランザクション( Propagation.REQUIRES_NEW)にする。
こうしないと、ほかの人が同じテーブルに挿入するときのシーケンス番号取得を
自分がDB登録トランザクション済みになるまで待たせることになります。
別トランザクション( Propagation.REQUIRES_NEW)にすれば、
自分のシーケンス番号取得が済めば、ほかの人がシーケンス番号を取得できるようになる。
補足:複数データの一括登録時に、ほかの人のDB追加を待たせないための工夫です。
追記:@Transactionalデフォルトは「propagation Propagation.REQUIRED」なので、
@Transactionalのメソッドから、@Transactionalのメソッドを呼び出した場合、
同一トランザクションとして処理されます。
<<追加 start>>
import org.springframework.transaction.annotation.Propagation;
<<追加 end>>
・・・
<<修正前 start>>
@Transactional(rollbackFor=Throwable.class)
<<修正前 end>>
<<修正後 start>>
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor=Throwable.class)
<<修正後 end>>
@Override
public String getDbSeq(String tableId, int keyItemLen, String aAri, int yymmddLen, int count) {
■2021/06/21から、『kaz_javaSpringBootプログラム自動作成◎自動生成ツール』をVectorに載せています。2022年にZenn本も書きました。使ってみての感想や間違いの指定や、こうやったほうがいいとかの情報があればメールください。
・Vector
www.vector.co.jp
・Zenn本(SpringBoot、Thymeleaf プログラム自動作成(マクロ使用版))
zenn.dev