@Transactionalロールバックは、春のブートアプリケーションでは動作しませんか?

Pracheer Pancholi:

私は私がDB2データベースにいくつかの従業員データを挿入し、以下そのためのコードである必要がある要件を抱えています:

@Log4j2
@Service
@Transactional
public class EmployeeServiceImpl extends EmployeeService{

@Autowired
private EmployeeDataRepository employeeDataRepository;

@Override
@Transactional(rollbackOn = {DataAccessException.class})
public void insertEmployeeData(List<Employee> employeeList){
 try{
     employeeDataRepository.insertEmployeeData(employeeList);
    }catch(DataAccessException ex){
      log.error("Exception whie inserting data in db {}",ex.getMessage());
    }
}
@Log4j2
@Repository
public class EmployeeDataRepositoryImpl implements EmployeeDataRepository{

@Autowired
private DataSource dataSource;

@Value("${db.schema}")
private String schema;

@Override
public void insertEmployeeData(List<Employee> employeeList){
   this.jdbcInsert = new SimpleJdbcInsert(dataSource).withTableName("Employee");
   for(Employee emp : employeeList){
    Map<String,Object> parameters = new HashMap<String,Object>();
      parameters.put("name", emp.name);
      parameters.put("age", emp.age);
      parameters.put("dateOfJoining", emp.dateOfJoining);
      parameters.put("address", emp.address);
      parameters.put("salary", emp.salary);
      jdbcInsert.execute(parameters);
      log.info("Created Record Name = " + name + " Age = " + age + " dateOfJoining = "+dateOfJoining);
      }
      return;
}

} 

スプリングデータソースプロパティのデータソースを使用して構成さに注入されるEmployeeDataRepositoryImplクラス。私が使用していSimpleJdbcInsertたDB2表にデータを挿入します。国境を越えた取り扱いのために私が使用しています @Transactional(rollbackOn = {DataAccessException.class})方法について。データは1つずつ挿入されると、何かがデシベルレベルでうまくいかないならば、それはロールバックしなければならないが、最終的にそのは起きていません。また、私はクラスレベルで注釈を入れてみましたが、運がありません。私は何をしないのです場合は私に知らせてください!

マルコBehler:

あなたはここに混ざって物事のカップルを持っています。

  1. (ランタイム)例外があれば春には、トランザクション・バックロールあなたの@Transactionalメソッドを介して泡。
  2. あなたはそれゆえ、DataAccessExceptionの例外をキャッチしている防止ロールバックを。
  3. rollbackOnで例外を指定する必要もありません。

このように読むべきあなたのコードは、これで十分です。

@Transactional
public void insertEmployeeData(List<Employee> employeeList){
  employeeDataRepository.insertEmployeeData(employeeList);
}

@Transactionalがどのように機能するかについての詳細は、以下を参照してくださいこのリンクを。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=24833&siteId=1