はじめに
spring bootのトランザクションの貼り方について
@Transactional アノテーションでトランザクション管理で学習したのでまとめます。
貼り方
コードを一部抜粋
package com.example.managingtransactions;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
// Transactionを利用したいファイルでインポートを行う
import org.springframework.transaction.annotation.Transactional;
@Component
public class BookingService {
private final JdbcTemplate jdbcTemplate;
public BookingService(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
// Transactionを貼りたい場所でアノテーションを設定する
@Transactional
// Stringの配列を引数で受け取り一件ずつInsert
public void book(String... persons) {
for(String person : persons) {
jdbcTemplate.update("insert into BOOKINGS(FIRST_NAME) values (?)", person);
}
}
}
配列の要素が全てInsert成功時のみCommitされる。
失敗したらRollbackされる