본문 바로가기

카테고리 없음

스프링 부트를 공부하기 전 알아야 할 이론들


REST API

  • 네트워크 아키텍처
    • clint / server 독립적 분리
    • stateless : 클라이언트 상태를 서버에 저장하지 않음
    • cache : 클라이언트는 서버의 응답을 임시저장(cache 캐시)할 수 있어야 함 (응답 재사용할 수 있어야 함)
    • 계층화 : 서버와 클라이언트 사이의 방화벽, 게이트웨이 등등.. 계층 형태로 구성
    • 인터페이스 일관성 : 독립적으로 하나가 바뀌어도 괜찮도록(클라이언트나 백엔드)
      • 자원의 식별(url에 식별할 수 있는 게 있어야 함)
      • 메시지를 통한 리소스 조작(html, xml, text, json), 이런 걸 http부분에 알려줌
      • 자기 서술적 메시지(get, post, put 할 때 url에 데이터를 넣을지 삭제할지 등)
      • 애플리케이션 상태에 대한 엔진으로써의 하이퍼미디어 ==> 이런 조건을 잘 갖춘 게 REST API
    • code on demand : java, js 등 특정 기능을 서버로부터 클라이언트가 전달받아 코드를 실행

client가 요청하면 server는 요청메시지를 해석해 그에 따른걸 다시 응답 메시지를 보내고
client가 응답 메세지를 받으면 해석하고 데이터 표시 및 처리를 한다.

 

 

JPA (Java Persistence API) (Jakarta라고도 해서 두 가지 명칭 모두 동일)

  • ORM : 객체(Application)와 데이터베이스를 연결해 주는 것 (이게 없다면 직접 매핑해서 해줘야 함)
    • ORM에 JPA, Hibernate, Spring Data Jpa가 있음
  • Hibernate
  • Spring Data Jpa : Hibernate를 조금 더 간편하게 사용하도록 추상객체를 한번 더 감싸 만들어 놓은 것

컨트롤러. java 파일에서 Ctrl + Sshift + T를 하면 test를 만들 수 있다.

 


Lombok

  • JPA와는 다르긴 한데 중요한 개념(getter / setter를 쓴다면 꼭 필요한 개념)
  • 도메인에서 JPA를 사용하기 위해서 필드변수(private)와 getter, setter를 만들어야 함
  • getter / setter 만드는 법
    • 1. 다 하나하나 적는다(public String getName() ~~)
    • 2. 우클릭 generate -> getter and setter를 이용해 모두 생성
    • 3. 클래스 상단에 @Getter @Setter 설정
  • Lombok 관련
    • @Getter
    • @Setter
    • @ToString : tostring 오버라이드 (자동으로)
    • @NoArgsConstructor : 아무런 인자를 주지 않고 new user()처럼 인자 없이 생성하는
    • @AllArgsConstructor : 객체가 가지고 있는 모든 필드를 인자로 받아서 생성하는
    • @RequiredArgsConstructor : 꼭 필요한 인자만을 이용해서 생성자를 만드는
    • @EqualsAndHashCode
    • @Data
    • @Builder : 객체를 생성하고 필드값을 주입해 주는데, 빌더의 형식을 가지고 제공해 줌
    • 혹시나 @들이 안 먹는다면, 플러그인에 lombok 설정되어 있는지 확인하기

 


H2 DB 및 로그 설정

  • H2 DB
    • 자바 기반의 경량화된 디비, 파일로 저장해서 실제 디비처럼 데이터 저장 가능
    • 메모리 디비처럼 실제 인스턴스 동작할 때만 유지되게도 가능 (testDB, 유지보수에서도 많이 사용)
  • http://localhost:8080/h2-console 로 접속하고 jdbc ~~ 넣고 커넥트 하면 웹디비 실행

웹 디비

 


springboot 웹프로젝트를 생성 / helloworld 찍어보기 / Lombok / H2 DB 및 로그 설정  

https://github.com/jiy0712/SpringBoot_JPA_Study