여러 테이블에 데이터를 삽입해야하는 시나리오가 있습니다. 하나 개의 쿼리가 실패하면 내가 마지막으로 실행 된 쿼리를 롤백 할스프링에서 데이터 일관성 유지
처음 삽입이 실행 및 제 2 삽입 후 첫 삽입은 롤백됩니다 실패 할 경우 먼저 삽입이 실패 할 경우 내 서비스 방법은 내가 원하는
@Service
@Transactional
public class ServiceNameImpl implements ServiceName{
@Autowired
private ABCRepository abcRepository;
@Autowired
private BCDRepository bcdRepository;
@Override
public SChResource save(SchData schData){
SchSch sch = new SchSch();
Contact con = new Contact();
sch.setName(schData.getName());
abcRepository.save(sch); --first insertion
con.setAddress(schData.getAddress());
bcdRepository.save(con); --second insertion
return null;
}
}
이며, 두 번째 삽입이 실행되면 두 번째 삽입이 롤백됩니다.
내가 무엇을해야하는지 제안하십시오.
'save()'메소드를 트랜잭션으로 만들고 싶습니다. – Kayaman
당신의 서비스가'@ Transactional'이라면 이미 작동 할 것입니다. 작동하지 않는다면이 질문은 당신의 질문에 대답하기에는 너무 적은 정보를 포함하고 있습니다. –
@M. Deinum @Transaction (readOnly = true) 또는 @Transactional (readOnly = false)을 사용해야하는 것과 혼동을 느낍니다.이 서비스 클래스에는 트랜잭션을 수행하지 않으려는 다른 메소드가 있기 때문에 – ankit