- HTTP 요청 보내기 :
- 요청 방식(GET, POST, PUT, DELETE 등), 요청 주소(URL), 요청 헤더, 요청 본문 등을 설정
- 서버 응답 받기 :
- 해당 요청에 대한 처리를 수행하고, 클라이언트에게 HTTP 응답
- 응답은 Response 객체, Promise의 형태로 반환
- 응답 처리 :
- Promise를 반환하기 때문에
.then
메서드 사용- catch로 오류 제어, finally는 무조건 실행
fetch("/api/v1/main", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(reqInsertMainDTO),
})
.then((response) => response.json())
// 받은 응답을 JSON으로 파싱
.then((data) => {
alert(data.message);
if (data.code === 0) {
location.reload();
}
// 서버에서 보낸 JSON 데이터를 사용
console.log(data);
})
.catch((error) => {
// 오류 처리
console.error("Error:", error);
});
fetch("/api/v1/main/" + regionId, {
method: "DELETE",
})
.then((response) => response.json())
.then((result) => {
alert(result.message);
if (result.code === 0) {
location.reload();
}
});
fetch("/api/v1/main/" + regionId, {
method:"PUT",
body: JSON.stringify(dto),
headers:{
"Content-Type" : "application/json",
}
})
.then((response) => response.json())
.then((result) => {
alert(result.message)
if(result.code === 0){
location.href= "/";
}
})
서드 레벨 또는 클래스 레벨에 적용하여 트랜잭션을 적용
1. 트랜잭션 시작:
메서드가 실행될 때 트랜잭션이 시작되며, 해당 메서드에서 일어나는 데이터베이스 작업은 모두 하나의 트랜잭션으로 처리됩니다.
트랜잭션 커밋:
메서드가 정상적으로 완료되면(예외가 발생하지 않으면) 트랜잭션이 커밋되고 데이터베이스에 변경 내용이 반영됩니다.
트랜잭션 롤백:
메서드에서 예외가 발생하면 트랜잭션은 롤백되고 데이터베이스의 상태는 메서드 실행 이전으로 되돌립니다. 즉, 모든 변경 사항이 취소됩니다.
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
// 기본키 자동 생성
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String email;
// 생성자, getter, setter 등의 코드는 생략
}
: 값이 있을 수도 있고 없을 수도 있는(Nullable) 값을 표현하는 래퍼 클래스
: 명시적으로 값이 없음을 표현하는 데에 사용import java.util.Optional;
public class Main {
public static void main(String[] args) {
String name = "John";
Optional optionalName = Optional.ofNullable(name);
optionalName.ifPresent(n -> {
System.out.println("Name exists: " + n);
});
}
}