Updated:

Chapter 1

Gradle 이란 무엇일까?

 Gradle은 빌드 자동화 시스템으로 Java 코드를 설정에 맞게 자동으로 Build해준다. build.gradle은 Gradle 기반의 빌드 스크립트로서 이 스크립트를 작성하면 소스 코드를 빌드하고 라이브러리들의 의존성을 쉽게 관리할 수 있다.

서버란 무엇일까?

 네트워크는 여러 대의 컴퓨터 또는 장비가 연결되어서 정보를 주고 받을 수 있게 도와주는 기술로, 서로의 정보를 주고 받기 위해서는 IP 주소, 서브넷 마스크, 게이트웨이 등의 정보를 설정하고 네트워크 프로토콜을 이용하겨 통신하게 된다.
 웹 서버는 인터넷을 통해 HTTP를 이용하여 웹상의 클라이언트의 요청을 응답해주는 통신을 하는 일종의 컴퓨터로, 브라우저를 통해 HTTP Request로 웹사이트를 웹 서버에 요청하고, 웹서버는 요청을 승인하고 HTTP Response를 통해 웹사이트 데이터를 브라우저에 전송한다. 이를 통해 브라우저는 서버에서 받아온 데이터를 이용해 웹사이트를 브라우저에 그려내는 일을 한다.

  • API(Application Programming Interface)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다.
  • RESTful API: REST(Representational State Transfer)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다. REST 아키텍처 스타일을 따르는 API를 REST API라고 한다. 즉, 서버의 api가 적절하게 http를 준수하며 잘 설계되어있으면 RESTful 하게 설계되어 있다고 생각할 수 있다.
    • API가 적절하게 HTTP 메서드를 사용했다면, RESTful하게 설계했다고 볼 수 있다.
  • HTTP(HyperText Transfer Protocol): 데이터를 주고 받는 양식을 정의한 통신 규약
    • HTTP 상태코드를 통해 브라우저와 서버간의 요청, 응답 과정에서 발생할 수 있는 상황들을 표현할 수 있다.

Lombok과 application.properties

 Lombok은 메서드, 생성자 등을 자동 생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리이다.

  • @Getter, @Setter
  • @AllArgsConstructor, NoArgsConstructor: 기본 생성자와 모든 필드를 가진 오버로딩된 생성자를 만들어 준다.
  • @RequiredArgsConstructor: final 제어가가 붙은 필드를 파라미터로 가진 오버로딘된 생성자를 만들어 준다.

 application.properties는 Spring과 관련된 설정을 할 때 사용되는 파일이다. 이 파일을 이용하면 자동으로 설정되고 있는 설정 값을 쉽게 수정할 수 있고 DB 연결 시 DB의 정보를 제공해야하는데 이러한 경우에도 이 파일을 이용하여 쉽게 값을 전달할 수 있다.

Spring MVC란 무엇일까?

 MVC란 Model-View-Controller의 약자로, 소프트웨어 디자인 패턴 중 하나이다.

  • Model: 데이터와 비즈니스 로직을 담당, 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등의 작업을 수행
  • View: 사용자 인터페이스를 담당, 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현
  • Controller: Model과 View 사이의 상호작용을 조정하고 제어, 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트

 Spring MVC란 Spring에서 MVC 디자인 패턴을 적용하여 HTTP 요청을 효율적으로 처리하고 있다고 이해하면 된다.

Path Variable과 Request Param, Dto

  • Path Variable: 브라우저에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있다.
    • 서버에 보내려는 데이터를 URL 경로에 추가할 수 있다.
  • Request Param: 서버에 보내려는 데이터를 URL 경로 마지막에 ?와 &를 사용하여 추가할 수 있다.
  • @RequestBody: HTTP Body에 JSON 데이터를 담아 서버에 전달할 때 해당 Body 데이터를 Java의 객체로 전달 받을 수 있다.
    • 예를 들어 HTTP Body에 {"name": "Robbie", "age": "95} 의 JSON 형태로 데이터가 서버에 전달되었을 때 @RequestBody 애너테이션을 사용해 데이터를 객체 형태로 받을 수 있다.
      @PostMapping("/form/json")
      public String helloPostRequestJson(@RequestBody Star star) {
      return ...;
      }
      
  • DTO(Data Transfer Object): 데이터 전송 및 이동을 위해 생성되는 객체
    • Request의 데이터를 처리할 때는 사용되는 객체는 RequestDto
    • Response를 할 때 사용되는 객체는 ResponseDto

Database, SQL, JDBC

  • DBMS(Database Management System): Database를 관리하고 운영하는 소프트웨어
  • RDBMS: Relational DBMS의 약자로 관계형 데이터베이스라고 불림

 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, UDATE, DELETE

 JDBC(Java Database Connectivity)로 DB에 접근할 수 있도록 Java에서 제공하는 API이다. JDBC에 연결해야하는 DB에 JDBC 인터페이스를 구현한 후 라이브러리를 제공하는데 이를 JDBC 드라이버라 부른다. 따라서 MySQL 드라이버를 사용해 DB를 연결하다가 PostgrSQL 서버로 변경이 필요할 때 드라이버만 교체하면 손쉽게 DB 변경이 가능한다.

Chapter 2

댓글남기기