[SPRING] @Transactional rollbackFor를 지정하면 RuntimeException도 포함됩니까?
SPRING@Transactional rollbackFor를 지정하면 RuntimeException도 포함됩니까?
@Transactional(rollbackFor = MyCheckedException.class)
public void foo() {
throw new RuntimeException();
}
이 트랜잭션이 롤백 되나요, 아니면 RuntimeException.class를 주석에 포함해야합니까?
해결법
-
==============================
1.rollbackFor 목록에 RuntimeException을 포함 할 필요가 없습니다. 비록 당신이 그것을 언급하지 않더라도 그것을 처리 할 것입니다. 나는 jdbcTemplate을 위해 그것을 시도했다 : -
rollbackFor 목록에 RuntimeException을 포함 할 필요가 없습니다. 비록 당신이 그것을 언급하지 않더라도 그것을 처리 할 것입니다. 나는 jdbcTemplate을 위해 그것을 시도했다 : -
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = MyException.class) public void updateSalary(final int increment){ jdbcTemplate.update("update EMPLOYEE set emp_salary = emp_salary + ?", increment); throw new RuntimeException("update exception"); }
Output: After Insertion: 1 Deepak 35000 2 Yogesh 35000 3 Aditya 35000 update exception After Update 1 Deepak 35000 2 Yogesh 35000 3 Aditya 35000
-
==============================
2.출처
출처
-
==============================
3.그래서 CheckedException과 함께 롤백 할 수 있습니다 (기본값은 RuntimeException). 예를 들면 다음과 같습니다.
그래서 CheckedException과 함께 롤백 할 수 있습니다 (기본값은 RuntimeException). 예를 들면 다음과 같습니다.
@Transactional(rollbackFor = Exception.class) public void save(Book book) throws Exception { bookRepository.save(book); System.out.println("Saved in transcation."); // No data is persisted if (true) { throw new Exception(); } }
from https://stackoverflow.com/questions/12830364/does-specifying-transactional-rollbackfor-also-include-runtimeexception by cc-by-sa and MIT license