3/18 RDBMS

안대륜·2022년 3월 18일

JPA

  • SQL을 쓰지안고 데이터를 생성, 조회,수정,삭제할수 있도록 해주는 번역기
    (스프링을 위해 태어난 녀석)
  • Repository는 JPA를 작동시키는 매개체

Gradle

  • 라이브러리를 가져올 수 있게 도와줌
  • 이걸 빌드해서 실제로 배포할 수 있게 도와줌

RDBMS

  • 컴퓨터에 정보를 저장하고 관리하는 기술
  • 성능/관리 면에서 매우 고도화된 엑셀과같음

H2

  • in-memory DB의 대표주자
  • 인메모리DB란 서버가 작동하는 동안에만 내용을 저장하고, 서버가 작동을 멈추면 데이터가 모두 석제되는 데이터베이스를 뜻함 (연습용으로 딱)

MySQL

  • MySQL은 서비스를 배포할때 사용할 데이터베이스

CREATE TABLE IF NOT EXISTS courses (
// 코시즈라는 테이블이 존재안하면 테이블을 만들어라
    id bigint(5) NOT NULL AUTO_INCREMENT, 
    // bigint =Long을 뜻함
    title varchar(255) NOT NULL,
    // varchar는 String (문자열)을 뜻함
    tutor varchar(255) NOT NULL,
    PRIMARY KEY (id)
    // id는 행을 구분하게해주는 (데이터하나하나를 구분하게 해주는 유일한값) PRIMARY KEY = id라는걸 내가 구분할수잇는 녀석으로 삼겠다의 의미
);
  • 3개의열로 구성이되있는거고 id , title, tutor어느하나도 비면안된다
  • big int는 SQL에서 Long을 가리키는 방법
  • AUTO_INCREMENT는 만약 기존의 id가 1이었다면 근데 다음께 들어오면 자동으로 아이디를 2,3,4,5등등자동으로 증가하라는 의미

Interface

  • 클래스에서 멤버가빠진 메소드 모음집
  • JPA는 인터페이스를 통해서만 사용할수있음

LocalDateTime

  • 시간을 나타내는 자바의 자료형 중에 하나
  • 골뱅이붙은건 어노테이션이라고함(스프링한테 야 이거 이런역할이있어 알려주는역할)
  • @EntityListeners (이녀석을 주시하라는것임)
    Entity가 Course같은 테이블임
  • AuditingEntityListener (뭔가 수정이일어날때 자동으로 반영해달라는것)
  • @MappedSuperclass (이 클래스를 상속을 하면 멤버변수가 있을텐데 그것도 컬럼으로 인식을 해줘라는의미)
  • abstract(추상) 는 직접구현이안되고 상속으로만 쓸수 있다는 의미

CRUD

  • 정보관리의 기본기능
  • 생성, 조회 ,변경, 삭제

스프링의 구조는 3가지영역으로 나눌수있음

    1. Controller : 가장 바깥부분, 요청/응답을 처리함
    1. Service :중간부분, 실제 중요한 작동이 많이 일어나는 부분
    1. Repo : 가장 안쪽부분, DB와 맞닿아 있음
  • Update는 Service 부분에 작성함

  • @Service : 스프링한테 이거는 service다 라고 알려줌
  • final : 이거 이 클래스에 꼭 필요한거야라고 표시하는(한번 값이 부여되면 변형할수없음) 의미

Lombok

  • Lombok(이하 롬복)은, 자바 프로젝트를 진행하는데 거의 필수적으로 필요한 메소드/생성자 등을 자동생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리임

DTO

  • 테이블을 막 건드려도 될까?
    = read, update할 때 Course 클래스를 막 써도 될까?
    = 내가 아닌 다른 사람이 변경이라도 한다면?? 😱
  • 완충재로 활용하는 것이 DTO(Data Transfer Object)입니다.

API

  • 클라이언트 - 서버간의 약속
  • 클라이언트가 정한대로 서버에게 요청을 보내면 , 서버가 요구사항을 처리하여 응답을 반환합니다.

REST

  • 👉 REST란, 주소에 명사, 요청 방식에 동사를 사용함으로써 의도를 명확히 드러냄을 의미함

  • 여기에 쓰이는 동사는 우리가 JPA 시간에 배운 CRUD를 지칭함

  • 즉 A에 대해 생성(POST)/조회(GET)/수정(PUT)/삭제(DELETE) 요청을 하는 것

EX)

  • GET /courses
    → 강의 전체 목록 조회 요청
  • GET /courses/1
    → ID가 1번인 녀석 조회 요청
  • POST /courses
    → 강의 생성 요청
  • PUT /courses/3
    → ID가 3번인 녀석 수정 요청
  • DELETE /courses/2
    → ID 2번인 녀석 삭제 요청

주의 사항

  • 주소에 들어가는 명사들은 복수형을 사용함
    /course
  • 주소에 동사는 가급적 사용하지 않음
    /accounts/edit
  • Spring 포스트 방식에서 데이터를 전달하는 방식은 엄격허게 정해져있다. (이해보다 암기에 가까움)
  • Content - Type application/json 으로해줌
    (heders 에서 Conten-type , value에서 application/json)

0개의 댓글