nyximos.log

Spring Boot 시작하기 본문

Programming/Spring Boot

Spring Boot 시작하기

nyximos 2022. 7. 11. 11:07

작년 이맘때 처음 스프링부트를 접하게 되었는데 많이 생소했던 기억이 난다.

여러 책들과 강의 블로그를 봐도 이해하기 어려웠어서 Spring 입문자들을 위한 포스팅을 해볼까 한다.

이후 포스팅에서는 Spring Boot + Gradle + MySQL + JPA + Thymeleaf  환경에서 간단한 CRUD를 만들어 볼 것이다.

 

프로젝트를 시작하기 앞서 Java의 객체 지향, List, Array List를 공부해야 이해가 빠를것이다.

그리고 이 글은 HTTP, 데이터베이스를 공부한 적이 없으며 웹 프로젝트가 처음이다! 하는 사람이 읽으면 좋을 것 같다.

개발 환경 구성 전 꼭 알아야하는 것들을 알아보자.

 

 

시간적 여유가 있다면 아래 책을 읽거나 강의를 보는 것을 추천한다.

비전공자를 위한 이해할 수 있는 IT 지식

그림으로 배우는 HTTP & Network Basic

모든 개발자를 위한 HTTP 웹 기본 지식

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

 

돈과 시간 모두 있다면 다음 로드맵을 따라가면서 차근차근 공부하는 것도 좋다.

우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복

김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵

 

이 카테고리에서는 따로 Git이나 GitHub에 대해 언급하지 않겠지만 앞으로 개발하다보면 모르면 안되니 꼭 공부하도록 하자.

매우쉽게 알려주는 git & github : 7월 31일까지 무료, 자주 사용하는 것만 빠르고 쉽게 알고 싶을 때

【한글자막】 Git & Github 실무 활용 완벽 가이드 : 유료, Git을 더 자세히 공부하고 싶을 때

누구나 쉽게 이해할 수 있는 Git : 모를 때마다 찾아 보면 좋은 사이트

Learn Git Branching : 실습할 수 있는 사이트

 

 

 

 

 

클라이언트 Client

서비스를 요청한다.

Request

  • 클라이언트가 서버로 보내는 요청
  • Method : GET, POST, PUT, DELETE 등
  • Header : 인증 정보, 쿠키, Body 정보 등 부가적인 정보를 담는다.
  • Body : 데이터 (string, json, binary file 등)

 

서버 Server

요청한 서비스를 제공하고 클라이언트에게 응답을 내려준다.

Response

  • 서버에서 클라이언트로보내는 응답
  • 서버 응답 ≠ 웹 브라우저 화면
  • Status Code
  • Header : content-type 등 상세한 응답 정보를 담는다. 
  • Body : 데이터 (html, json, 파일 등)

 

웹 서버 Web Server

  • HTTP 기반으로 동작
  • 정적 리소스 제공, 기타 부가기능
  • 정적 HTML, CSS, JS, 이미지, 영상 등

 

웹 애플리케이션 서버(WAS - Web Application Server)

  • HTTP 기반으로 동작
  • 웹 서버 기능 포함 + (정적 리소스 제공 가능)
  • 프로그램 코드를 실행해서 애플리케이션 로직 수행
  • 동적 HTML
  • HTTP API(JSON)
  • 서블릿, JSP, 스프링 MVC
  • 예) 톰캣(Tomcat) Jetty, Undertow

 

SSR - 서버 사이드 렌더링

  • HTML 최종 결과를 서버에서 만들어서 웹 브라우저에 전달
  • 주로 정적인 화면에 사용
  • JSP, 타임리프

 

CSR - 클라이언트 사이드 렌더링

  • HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용
  • 주로 동적인 화면에 사용, 웹 환경을 마치 앱 처럼 필요한 부분부분 변경할 수 있음
  • React, Vue.js

 

API

클라이언트, 서버와 같이 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계

주로 JSON 방식으로 통신

 

URL Uniform Resource Locator

네트워크 상에서 자원이 어디 있는지 알려주는 규약

http://서버주소:포트번호/리소스경로

 

HTTP HyperText Transfer Protocol

인터넷에서 데이터를 주고 받기 위한 프로토콜

우리는 HTTP 메세지에 모든것을 전송한다.

HTML, TEXT, 이미지, 영상, 파일, JSON, XML 등 거의 모든 형태의 데이터를 전송할 수 있다.

http는 80번 포트를 사용하며 https는 443 포트를 사용한다.

 

HTTP 주요 메서드

  • GET : 리소스 조회
  • POST : 요청 데이터 처리, 주로 등록에 사용
  • PUT : 리소스를 대체, 해당 리소스가 없으면 생성
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

 

HTTP 상태 코드

클라이언트가 보낸 요청의 처리 상태를 알려주는 코드

1xx

Informational 요청이 수신되어 처리중

2xx

Successful 요청 정상 처리

3xx

Redirection 요청을 완료하기 위해 추가 행동 필요

4xx

Client Error 클라이언트 오류, 잘못된 문법, 요청 리소스가 서버에 없는 경우 등으로 서버가 요청을 수행할 수 없음

5xx

Server Error 서버 오류, 서버가 정상적으로 요청을 처리하지 못함

 

 

 

 

DB DataBase 데이터베이스

특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것

필요한 데이터를 중복없이 저장해 둔 것 이라고 기억해두자.

 

DBMS DataBase Management System, 데이터베이스 관리 시스템

사용자와 DB 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터를 관리해주는 소프트웨어

정의, 조작, 제어 기능이 있다.

 

 

 

SQL Structured Query Language

관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어 하기 위해 사용

DDL Data Definition Language 데이터 정의 언어

테이블 같은 데이터 구조 정의, 변경, 삭제

  • CREATE
  • ALTER
  • DROP
  • RENAME

DML Data Manipulation Language 데이터 조작 언어

데이터 조회나 검색, 새로운 행 추가,데이터 수정, 삭제

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

DCL Data Control Language 데이터 제어 언어

데이터베이스에 접근하고 객체를 사용할 수 있도록 권한 주고 회수

  • GRANT
  • REVOKE

TCL Transaction Control Language 트랜잭션 제어 언어

논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어

  • COMMIT
  • ROLLBACK

 

 

 

TABLE

  • 데이터를 저장하는 객체 Object
  • 관계형 데이터베이스의 기본단위
  • 어느 특정한 주제와 목적으로 만들어지는 일종의 집합
  • 행과 칼럼의 2차원 구조를 가진 데이터의 저장 장소

칼럼 Column

  • 세로 방향
  • 더이상 나눌 수 없는 특성

행 Row

  • 가로 방향
  • 연결된 데이터

필드 Field

  • 칼럼과 행이 겹치는 하나의 공간

 

 

 

데이터 모델링

  • 현실 세계에 존재하는 데이터를 추상화하여 데이터베이스로 옮기는 변환과정

 

ERD Entity-Relationship Diagram 개체 관계 모델

개체-관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물

개체

  • 현실 세계에서 조직을 운영하는데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것
  • 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체
  • 사각형으로 표현

속성

  • 개체가 가지고 있는 고유의 특성
  • 의미 있는 데이터의 가장 작은 논리적 단위
  • 타원으로 표현
  • Null 값 : 아직 결정되지 않았거나 모르는 값

관계

  • 개체와 개체가 맺고 있는 의미 있는 연관성
  • 개체처럼 속성을 가질 수 있다.
  • 마름모로 표현
  • 일대일 관계, 일대다 관계, 다대다 관계 세 가지 유형으로 분류

  • 개체 타입과 속성을 연결

 

 

 

RDB Relational DataBase 관계형 데이터베이스

개체나 관계를 모두 릴레이션이라는 표로 표현

튜플 Tuple

  • 릴레이션을 구성하는 각각의 행
  • 속성의 모임
  • 파일 구조에서 레코드와 같은 의미
  • 카디널리티 Cardinality : 튜플의 수

속성 Attribute

  • 데이터베이스를 구성하는 가장 작은 논리적 단위
  • 파일 구조에서필드 Field 와 같은 의미
  • 개체의 특성
  • 차수 Degree : 속성의 수

도메인 Domain

  • 하나의 속성이 취할 수 있는 같은 타입의 원자 값들의 집합
  • 성별 속성의 도메인은 '남'과 '여'로 그 외의 값은 입력될 수 없다,

 

 

관계형 데이터베이스의 제약 조건 - 키

후보키

  • 릴레이션을 구성하는 속성들 중 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합
  • 기본키로 사용할 수 있는 속성
  • 유일성 :  하나의 키 값으로 하나의 튜플만을 유일하게 식별
  • 최소성 : 모든 레코드를 유일하게 식별하는데 꼭 필요한 속성으로만 구성. 

기본키

  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
  • 기본키는 후보키의 성질(유일성, 최소성)을 갖는다.
  • Null 값을 가질 수 없다.

대체키

  • 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키

슈퍼키

  • 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
  • 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.
  • 유일성은 만족시키지만 최소성은 만족시키지 못한다.

외래키

  • 다른 릴레이션의 기본키를 참조하는 속성, 속성들의 집합
  • 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는 데 중요한 키
  • <회원> 테이블과 <주문>테이블이 있을때 <주문> 테이블이 <회원>테이블을 참조한다. 
  • <회원> 테이블의 기본키인 [회원아이디]는 <주문> 테이블의 [주문회원] 이라는 외래키로 참조된다.
  • 회원 테이블 기본키 PK [회원아이디] = 주문 테이블 외래키 FK [주문회원]