해당 메소드에서 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는 빼구요 ^^

 
Posted by 머드초보
,