이전 글에서는 트랜잭션 롤백 예외 처리에 대한 글을 작성했었다. 즉, 1개의 데이터를 업데이트나 INSERT를 하다가 어떠한 문제 때문에 실패를 하면 DB에 반영된 전체의 과정들을 롤백하는 것으로 예외처리를 하는 글이었다.
2023.05.25 - [Language/Java] - [Java] Java 트랜잭션 롤백 예외 처리 하는 방법
이번 글에서는 지인 분이 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 명령어를 보낼까? 하다가 더 쉬운게 있어서 이렇게 작업했다.
'Language > Java' 카테고리의 다른 글
[Java] Java 날짜 계산하는 방법(N개월 전, 후) (0) | 2023.06.27 |
---|---|
[Java] Java SAP와 RFC 인터페이스 통신에 대한 정리(Map/Table) (0) | 2023.06.26 |
[프로그래머스] 등차수열의 특정한 항만 더하기 자바(JAVA) (0) | 2023.06.07 |
[Java] java.lang.OutOfMemoryError: Java heap space 문제 해결하는 방법 (0) | 2023.06.02 |
[Java] Java KST 시간에서 연월일 추출하는 방법 (0) | 2023.06.01 |
[Java] Java 트랜잭션 롤백 예외 처리 하는 방법 (0) | 2023.05.25 |
[Java] Java JCO Key 가져오는 방법(getExportParameterList()) (0) | 2023.05.24 |
[Java] Java HashMap Key 가져오는 방법(Iterator 사용) (0) | 2023.05.22 |
최근댓글