해당 메소드에서 catch해버리면 롤백이 안됩니다-_-;
[code]
@Transactional(readOnly=true, rollbackFor={Throwable.class})
public void insertData() throws Throwable {
try {
getSqlMapClientTemplate().insert("insertData");
System.out.println("oracle에 insert성공");
throw new IOException();
} catch (IOException e) {
System.out.println("io예외발생");
}
}
[/code]
여기서 처럼 IOException이 발생했는데 해당 트랜젝션으로 설정한 메소드에서 예외를 catch해버리면 롤백이 안되더라구요-_-;
그 메소드를 호출한 놈한테 가서 해야합니다.
main에서 호출했다고 하면, main에 가서
[code]
try {
testInsertOracle.insertData();
} catch (Throwable e) {
System.out.println("예외발생");
}
[/code]
요렇게 해줘야 합니다. 메소드에 있는 catch는 빼구요 ^^
'롤백'에 해당되는 글 1건
- 2008.04.24 [Springframework] 트랜젝션 롤백할 때 주의할 점! 2