스프링의 경우
@ 선언적 트랜잭션 처리
게시글 작성 + image삽입 구현
Spring에서 트랜잭션 처리하는 방법
방법 1) <tx:advice> xml을 이용한 방식 -> 패턴을 지정하며 일치하는 메서드 호출 시 자동으로 트랜잭션을 제어
너무 빡빡해서 느려짐
방법 2) @Transactional 어노테이션 활용 - 선언적 트랜잭션 처리 방법.
RunTimeException (Unchecked Exception) 처리를 기본값으로 같는다
Checked Exception : 예외 처리가 필수 ( transFerTo ) ==
외부 요소들 , 발생시 충격강도가 강할때 ,
SQL관련 예외 , 파일 업로드 관련 예외
UnChecked Exception : 예외 처리가 선택 ( int a = 10/0);
산술적 예외 ,
사용자의 문제들
rollbackFor : rollback을 수행하기 위한 예외의 종류를 작성한다.
@Transactional(rollbackFor = { Exception.class })
이미지의 입출력을 제어하는 예외명이 따로 없어 직접 만들기로 했다
} else {// 이미지 삽입 실패시
// 사용자가 정의한 예외를 rollback을 수행하게함.
throw new InsertFailException(); // 매개변수로 작성 가능
}
이미지를 서버에 업로드중 발생할 수 있는 예외인대
예외 처리는 @Transactional 어노테이션으로 예외는 잡아서 롤백은 처리하지만
예외명을 호출할수 있게 연결한다.
throw : 예외처리를 의미
//사용자 정의 예외 생성 방법
//1) 기존에 존재하는 예외 클래스 하나를 상속 받는다
// 단 , RuntimeException과 상속관계인 예외를 상속받게 되면
// 자동적으로 Unchecked Exception이 된다.
//2) 생성자 작성시 super() 생성자를 이용해서 코드 구현
public class InsertFailException extends RuntimeException{
//따로 별건 없다 그냥 예외의 이름을 생각하는 수준
public InsertFailException() {
super("게시글 삽입 실패");
}
public InsertFailException(String msg) {
super(msg);
}
}