으머애
248
2020-10-12 16:19:52 작성 2020-10-12 16:30:44 수정됨
9
234

자바에서 exception없이 롤백하는 방법이 있습니까?


업데이트 구문을 실행했을 때 2이상의 수를 리턴하면 롤백을하려고하는데 
Test = update
If(test > 1){
 
}

If안에 업데이트 한것을 롤백해야하는데 방법을 모르겠습니다
0
  • 답변 9

  • 로봇이 아닙니다
    163
    2020-10-12 16:52:18

    PlatformTransactionManager 를 주입받아서

    TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());
    repository.insert(data);
    if(test>
    1){
    transactionManager.rollback(status)
    ;
    }else {
    transactionManager.commit(status)
    ;
    }
  • 으머애
    248
    2020-10-12 17:36:07

    감사합니다! 그런데 repository.insert(data)는 무엇인가요..

  • 맹훈
    328
    2020-10-12 17:37:13
    insert 쿼리를 실행하는 부분 아닐까요?
  • 맹훈
    328
    2020-10-12 17:37:58

    질문글에 있는 예제로 비유하자면 update 구문이라고 보심 될 것 같음

  • 로봇이 아닙니다
    163
    2020-10-12 17:38:11
    사용하시는 DAO객체의 update메서드로 변경하시면 되지 않을까요?
  • 으머애
    248
    2020-10-12 17:51:40

    모두 감사합니다 ㅠ

  • 로봇이 아닙니다
    163
    2020-10-12 19:02:06

    잘 동작하나요?

  • 으머애
    248
    2020-10-12 19:24:14

    롤백은 작동하는데 웹페이지에서는 자꾸 500에러가뜨네요 else에서는 commit을 넣었고 test>1 일때 transactionManager.rollback()이 실행되도록 했는데 

    Rollback이 실행되면 DB상 롤백은 되지만 웹페이지상에는 500에러가 납니다 ㅠ

  • 으머애
    248
    2020-10-12 19:25:29

    혹시 트랜잭션 롤백을 컨트롤러에서 넣어서 그럴까요?

  • 로그인을 하시면 답변 을 등록할 수 있습니다.