728x90
반응형
transaction 효과 - 애노테이션 추가
한번에 실행해야 하는 다수개의 SQL문장작업이 필요할 때 사용
예시 : 게시글 저장과 첨부파일 정보 저장(서버), 첨부파일 정보 저장(DB)이 동시에 필요함
예시2 : A은행에서 B은행으로 계좌이체 -> 상호간의 은행 서버에서 데이터 증감이 동시에 일어나야 함. 즉 한 transaction에 의해 실행되어야 한다.
실제 사용예시
@Service 클래스에서 사용되고 코드는 아래와 같다.
꼭 Service에서 사용할 필요는 없지만 @Service에서 로직을 수행하기 때문에 Service에서 수행
@Transactional(rollbackFor={Exception.class})
public String saveBoard(Board board, MultipartFile[] files){
//만약 게시판에서 저장되어야할 파일이 있고 DB와 서버의 동시통신이 필요할 때 transaction을 사용하여 작업을 동시처리한다.
@Transactional(rollbackFor={Exception.class})
public String saveBoard(Board board, MultipartFile[] files){
//만약 게시판에서 저장되어야할 파일이 있고 DB와 서버의 동시통신이 필요할 때 transaction을 사용하여 작업을 동시처리한다.
this.saveBoard(board) //게시글 저장
for(int i = 0; i<files.length; i++){
this.saveFileInfo(files[i]); //개별의 파일 DB 저장
this.filesave(files[i]); //개별의 파일 서버 저장
}
}
위의 3개의 작업은 하나라도 오류가 생기면 큰 결함이 생긴다. 따라서 하나의 작업이 실패하면 모든 작업을 원상복구 시킬 수 있는 스프링이 제공하는 애노테이션을 transaction이라 하고 오류가 생기면 작업을 되돌릴 수 있게 rollbackFor={Exception.class}을 선언한다.
728x90
반응형
'국비과정 > Spring Framework' 카테고리의 다른 글
@sessionattributes에 여러개의 키를 주기 (0) | 2022.04.12 |
---|---|
클래스 VO 설계방법 (0) | 2022.04.05 |
PathVariable과 RequestParam의 getMapping설정방법 (0) | 2022.03.27 |
스프링프레임워크 mybatis 설정방법 (0) | 2022.03.27 |
스프링 프레임워크 기본 세팅 하는 법 + MVC 패턴 설명 (0) | 2022.03.23 |