데이터베이스에서 데이터에 대한 하나의 논리적 실행단계
ACID (원자성, 일관성, 고립성, 지속성) : 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어
더 이상 쪼갤 수 없는 최소 단위의 작업
모두 저장되거나, 아무 것도 저장되지 않거나를 보장
javascript 에서 처리
ApiException
FolderController
// javascript
function addFolder() {
const folderNames = $('.folderToAdd').toArray().map(input => input.value);
folderNames.forEach(name => {
if (name == '') {
alert('올바른 폴더명을 입력해주세요');
return;
}
})
$.ajax({
type: "POST",
url: `/api/folders`,
contentType: "application/json",
data: JSON.stringify({
folderNames
}),
success: function (response) {
$('#container2').removeClass('active');
alert('성공적으로 등록되었습니다.');
window.location.reload();
},
error: function (response) {
// 서버에서 받은 에러 메시지를 노출
if (response.responseJSON && response.responseJSON.message) {
alert(response.responseJSON.message);
} else {
alert("알 수 없는 에러가 발생했습니다.");
}
}
})
}
// ApiException
@AllArgsConstructor
@Getter
public class ApiException {
private final String message;
private final HttpStatus httpStatus; // 500,400
}
# try-catch로 잡을수도 있지만 최대한 핵심기능은 건들이지 않기 위해
# FolderController에 추가해줌
공통적으로 이 에러가 발생하면
@ExceptionHandler({ IllegalArgumentException.class })
public ResponseEntity<Object> handle(IllegalArgumentException ex) {
ApiException apiException = new ApiException(
ex.getMessage(),
// HTTP 400 -> Client Error
HttpStatus.BAD_REQUEST
);
return new ResponseEntity<>(
apiException,
HttpStatus.BAD_REQUEST
);
}
# ApiRequestException
# FolderService
# ApiExceptionHandler
package com.sparta.springcore.exception;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class ApiExceptionHandler {
@ExceptionHandler(value = { ApiRequestException.class })
public ResponseEntity<Object> handleApiRequestException(ApiRequestException ex) {
ApiException apiException = new ApiException(
ex.getMessage(),
// HTTP 400 -> Client Error
HttpStatus.BAD_REQUEST
);
return new ResponseEntity<>(
apiException,
// HTTP 400 -> Client Error
HttpStatus.BAD_REQUEST
);
}
}