반응형

이전 글에서는 트랜잭션 롤백 예외 처리에 대한 글을 작성했었다. 즉, 1개의 데이터를 업데이트나 INSERT를 하다가 어떠한 문제 때문에 실패를 하면 DB에 반영된 전체의 과정들을 롤백하는 것으로 예외처리를 하는 글이었다.

2023.05.25 - [Language/Java] - [Java] Java 트랜잭션 롤백 예외 처리 하는 방법

 

[Java] Java 트랜잭션 롤백 예외 처리 하는 방법

Spring FrameWork에서 우리는 애노테이션을 사용하여 하나의 서비스에 대한 트랜잭션 관리를 하게 된다. 로직이 단순할 경우에는 트랜잭션 롤백에 대한 필요성이 적어질 수 있지만, 비즈니스 로직이

yongku.tistory.com

이번 글에서는 지인 분이 1개의 트랜잭션에서 DB 작업을 하다가 INSERT나 UPDATE 시 백엔드 단에서 에러가 발생했을 때 현재까지 작업했던 것을 롤백하지 않고 반영이 되게 하는 것을 원했었고, 그것에 대한 해답을 알려드렸다. 나도 이론만 알고 있었지만, 직접 테스트를 하면서 이번 글을 작성한다.


목차

1. 1개의 트랜잭션에서 예외 발생 시 반영하는 방법

1. 1개의 트랜잭션에서 예외 발생 시 반영하는 방법

우리는 스프링에서 롤백에 대한 개념은 Transactional이라는 애노테이션을 사용하여 롤백 등을 관리한다. 그래서 exception이 발생하면 인터셉터를 거쳐 dispatcher Servlet을 거치고 필터를 거쳐 WAS까지 전달이 된 후, exception에 대한 대응을 하게 된다. 물론, 중간과 끝에 과정이 더 있다.

 

그래서, 우리는 이것에 대해 따로 액션을 취하기 위해 사용하는 문법들이 있다. 우리가 정말 많이 사용하는 try ~ catch 문이다.

try{
	작업 시작
}catch (Exception e) {
	e.printStackTrace();
}

 

위와 같이, 우리는 try ~ catch문을 정말 일반적으로 사용한다. try 문 안에서 작업이나 비즈니스 로직을 돌리다가 exception이 나오면 catch 문 안에 있는 것을 실행한다. 추가적으로, finally 문이 있는데 exception이 나오든 안나오든 무조건 실행하는 finally문도 사용하기도 한다.

 

exception 에러가 발생했을 때, db에 업데이트 처리하는 방법은 위의 말에서 다 나왔다.

try{
	작업 시작
}catch (Exception e) {
	e.printStackTrace();
    
    db 업데이트 처리
}

 

 

위와 같이, catch 문 안에 db에 접근하여 에러 내용들을 들고 update와 관련된 로직을 추가로 넣으면 된다. 처음에는 이 간단한 것을 몰랐을 때, 중간에 작업 하다가 java 단에서 commit 명령어를 보낼까? 하다가 더 쉬운게 있어서 이렇게 작업했다.


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기