얼마 전에 시큐어 코딩하다가 다음과 같은 버그를 발견하게 되었습니다.
이런 버그는 처음 접해서 구글링해 본 결과
트랜잭션을 커밋하다가 예외가 발생했을 경우 처리하는 경우가 없어서 발생한 버그였습니다.
예를 들면 데이터베이스에 작업하다가 에러가 발생한 경우 지금까지 작업한 내용을 반영(commit) 하지 않고
작업하기 이전 상태로 롤백하는 경우라고 생각하시면 될 거 같습니다.
(현재 작업 중인 트랜잭션 취소)
회사 소스 코드라 모자이크 처리한 거 이해해주시기 바랍니다.
위의 소스를 보게 되면 finally 안에 "transaction.close();"가 추가된 것을 볼 수 있습니다.
트랜잭션 작업 중간에 예외가 발생하거나 발생하지 않아도 트랜잭션이 해제되도록 수정했습니다.
앞으로 트랜잭션 관련 작업을 할 때 유의하면 좋을 거 같습니다.
'dev > 스프링' 카테고리의 다른 글
Http 요청 한글 파라미터 인코딩 (0) | 2021.06.01 |
---|---|
lombok 설치 및 사용 (0) | 2021.02.11 |
스프링 프레임워크 개발 시작하기 (0) | 2020.04.01 |
custom annotation 사용법 (0) | 2020.03.15 |
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 에러 (0) | 2020.01.25 |