Spring 트랜잭션 처리

김덕근·2023년 5월 9일
0

Spring

목록 보기
16/19

Spring 에서 트랜잭션 처리하는 방법

  • AOP(관점 지향 프로그래밍)을 이용해서 DAO->service 또는 service 코드 수행 시점에
    예외가 발생하면 rollback을 수행

방법 1) <tx:advice> XML을 이용한 방법 -> 패턴을 지정하여 일치하는 메서드 호출 시 자동으로 트랜잭션 제어(servlet-context.xml)
방법 2) @Transactional 선언적 트랜잭션 처리 방법
-> RunTimeException(Unchecked Exception) 처리를 기본값으로 갖음.

checked Exception

예외처리 필수 -> SQL 관련 예외, 파일 업로드 관련 예외

Unchecked Exception

예외처리 선택


ServiceImpl부분

@Transactional(rollbackFor= {Exception.class})

rollbackFor : rollback을 수행하기 위한 예외의 종류를 작성

게시글 삽입 + 이미지 삽입 서비스 구현(강제 예외발생)

 else { // 이미지 삽입 실패
					
					// 강제로 예외 발생시켜서 rollback을 수행하게 함
					// -> 사용자 정의 예외
					throw new InsertFailException();
				}

board.model.exception.InsertFailException

InsertFailException.java

// 사용자 정의 예외 생성 방법
// 1) 기존에 존재하는 예외 클래스 하나를 상속 받음
// 	단, RuntimeException 과 상속관계인 예외를 상속 받으면 unchecked Exception이 된다.

// 2) 생성자 작성시 super() 생성자를 이용해서 코드를 구현


public class InsertFailException extends RuntimeException{
	public InsertFailException() {
		super("게시글 삽입 실패");
	}
	
	public InsertFailException(String message) {
		super(message);
	}
	
}

throws IOException (controller, service, serviceImpl)

profile
안녕하세요!

0개의 댓글