Jackson
Jackson은 JSON 데이터 구조를 처리해주는 라이브러리
- Spring은 3.0 버전 이후 Jackson과 관련된 API를 제공한다.
- Object를 JSON타입의 String으로 변환이 가능하다.
- JSON 타입의 String을 Object로 변환이 가능하다.
Path Vairable
Client 즉, 브라우저에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있다.
- 서버는 데이터를 받아 사용해야 하는데 데이터를 보내는 방식이 한 가지가 아니라 여러 가지가 있기 때문에 모든 방식에 대한 처리 방법을 학습해야 한다.
- 데이터를 받기 위해서는 /star/{name}/age/{age} 이처럼 URL 경로에서 데이터를 받고자 하는 위치의 경로에 {data} 중괄호를 사용한다.
Request Param
서버에 보내려는 데이터를 URL 경로 마지막에 ?와 &를 사용하여 추가할 수 있다.
- @RequestParam은 생략이 가능하다.
- @RequestParam(required = false) 이렇게 required 옵션을 false로 설정하면 Client에서 전달받은 값들에서 해당 값이 포함되어 있지 않아도 오류가 발생하지 않는다.
- @pathVariable(required = false)도 해당 옵션이 존재한다.
- Client으로부터 값을 전달받지 못한 해당 변수는 null로 초기화된다.
ModelAttribute
HTTP 데이터를 객체로 처리하는 방법
- HTML의 form 태그를 사용하여 POST 방식으로 HTTP 요청을 보낼 수 있다. 이때 해당 데이터는 HTTP Body에 담겨서 서버로 전달된다.
- 데이터를 Java의 객체 형태로 받는 방법은 @ModelAttribute 애너테이션을 사용한 후 Body 데이터를 받아올 객체를 선언한다.
- 데이터를 여러 개 받아올 때 @RequestParam을 이용해서 받아오기가 힘들 수 있다. 이때 @ModelAttribute 애너테이션을 사용하면 Java의 객체로 데이터를 받아올 수 있다.
RequestBody
HTTP 데이터를 객체로 처리하는 방법
- HTTP Body에 JSON 데이터를 담아 서버에 전달할 때 해당 Body 데이터를 Java의 객체로 전달받을 수 있다.
DTO
DTO (Data Transfer Object)는 데이터 전송 및 이동을 위해 생성되는 객체를 의미한다.
- Client에서 보내오는 데이터를 객체로 처리할 때 사용된다.
- 서버의 계층 간의 이동에도 사용된다.
- DB와의 소통을 담당하는 Java클래스를 그대로 Client에 반환하는 것이 아니라 DTO로 한번 변환한 후 반환 시에 사용한다.
Database
한마디로 정의하면 '데이터의 집합' 이라고 할 수 있다.
- DB는 우리가 매일 사용하는 카톡 메시지 정보, 인스타그램 등의 사진등의 정보를 저장하고 관리해 준다.
- DBMS : Database Management System의 약자. DB를 관리하고 운영하는 소프트웨어를 의미한다.
- RDBMS : Relational DBMS의 약자로 관계형 데이터 베이스라고 불린다. 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있다. 테이블 간 FK(foreign Key)를 통해 다른 데이터를 조합해서 함께 볼 수 있다는 장점이 있다.
RDBMS의 종류
각 제품 간 차이가 크지 않아서 사실 어떤걸 사용하든 좋다.
유료인 Oracle을 제외하고는 보통 MYSQL, PostgreSQL에서 많이 고르는 편이다.
SQL
Structured Query Language의 약자로 RDBMS에서 사용되는 언어이다.
- DDL : Data Definition Language의 약자. 테이블이나 관계의 구조를 생성하는 데 사용한다.
(CREATE, ALTER, DROP, TRUNCATE)
- DCL : Data Control Language의 약자. 데이터의 사용권한을 관리하는 데 사용한다.
(GRANT, REVOKE)
- DML : Data Manipulation Language의 약자. 테이블에 데이터를 검색, 삽입, 수정, 삭제할 때 사용한다.
(INSERT, SELECT, UPDATE, DELETE)
JDBC
애플리케이션 서버와 데이터베이스의 소통방법
- JdbcTemplate : JDBC의 등장으로 손쉽게 DB교체가 가능해졌지만 아직 DB에 연결하기 위해 여러 가지 작업 로직들을 직접 작성해야 한다는 불편함이 남았다. 이러한 불편함을 해결하기 위해 커넥션 연결, statement 준비 및 실행, 커넥션 종료 등의 반복적이고 중복되는 작업들을 대신 처리해 주는 JdbcTemplate이 등장했다.
정리
클라이언트에서 서버에 데이터를 보내는 방식과 서버에서 데이터를 받아오는 방식의 종류가 다양하다. 내가 만들 기능이 어떤 기능을 수행해야 하는지에 따라서 방법을 달리 구현하면 될 것 같다. Spring 공부가 Java의 개념에서 +된 느낌인 줄 알았는데 생각보다 어렵다. 더 많은 시간을 투자해야겠다. 어느 시점에 ModelAttribute, RequestBody을 구분해서 사용해야 하는지 설명을 봐도 크게 와닿지 않았다. 실제로 코딩해 보면서 사용해 보니 그래도 어느 정도는 머릿속에 들어온 거 같다. 기본기를 확실히 잡고 가야 될 거 같다.
'Back-End > Spring (SpartaCC)' 카테고리의 다른 글
[Spring] 스파르타코딩클럽 Spring공부(6) - OAuth, 단위테스트, 통합테스트, 예외처리관리 (1) | 2023.07.10 |
---|---|
[Spring] 스파르타코딩클럽 Spring공부(5) - Validation, Entity 관계 (0) | 2023.06.23 |
[Spring] 스파르타코딩클럽 Spring공부(4) - 인증/인가, 쿠키/세션, 필터 (0) | 2023.06.20 |
[Spring] 스파르타코딩클럽 Spring공부(3) - 3 Layer Architecture, JPA (0) | 2023.06.20 |
[Spring] 스파르타코딩클럽 Spring공부(1) - Spring MVC (1) | 2023.06.13 |
남건욱's 공부기록