Spring Boot (7)

ysh·2023년 7월 21일
0

Spring Boot

목록 보기
41/53
post-custom-banner

Controller와 RestController

비동기 통신 fetch

  1. HTTP 요청 보내기 :
  • 요청 방식(GET, POST, PUT, DELETE 등), 요청 주소(URL), 요청 헤더, 요청 본문 등을 설정
  1. 서버 응답 받기 :
  • 해당 요청에 대한 처리를 수행하고, 클라이언트에게 HTTP 응답
  • 응답은 Response 객체, Promise의 형태로 반환
  1. 응답 처리 :
  • Promise를 반환하기 때문에 .then 메서드 사용
  • catch로 오류 제어, finally는 무조건 실행

예시

post (게시, 추가)

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);
});

delete (삭제)

fetch("/api/v1/main/" + regionId, {
  method: "DELETE",
})
  .then((response) => response.json())
  .then((result) => {
  alert(result.message);
  if (result.code === 0) {
    location.reload();
  }
});

put (수정)

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= "/";
  }
})

@Transaction

서드 레벨 또는 클래스 레벨에 적용하여 트랜잭션을 적용
1. 트랜잭션 시작:
메서드가 실행될 때 트랜잭션이 시작되며, 해당 메서드에서 일어나는 데이터베이스 작업은 모두 하나의 트랜잭션으로 처리됩니다.

  1. 트랜잭션 커밋:
    메서드가 정상적으로 완료되면(예외가 발생하지 않으면) 트랜잭션이 커밋되고 데이터베이스에 변경 내용이 반영됩니다.

  2. 트랜잭션 롤백:
    메서드에서 예외가 발생하면 트랜잭션은 롤백되고 데이터베이스의 상태는 메서드 실행 이전으로 되돌립니다. 즉, 모든 변경 사항이 취소됩니다.


Auto Increment (PK 생성)

@GeneratedValue(strategy = GenerationType.[타입])

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 등의 코드는 생략
}

Optional

: 값이 있을 수도 있고 없을 수도 있는(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);
    });
}

}

profile
유승한
post-custom-banner

0개의 댓글