kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

「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