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 ~~ 넣고 커넥트 하면 웹디비 실행