스프링 입문 1-0 웹 동작방식 이해하기
웹의 동작방식
IP주소란?
- 거대한 네트워크망에서 여러분의 컴퓨터를 식별하기 위한 위치 주소
- 네트워크상에서의 데이터 송/수신은 이 주소를 기준으로 이루어지고 있다.
브라우저란?
- 웹페이지, 이미지, 비디오등의 컨텐츠를 송/수신하고 표현해주는 소프트웨어
DNS란?
- 서버의 IP주소(192.168.0.123)와 도메인 이름을 중개해주는 전화번호부와 같은 서버
HTTP란?
- 멀리 떨어져서 서로에 대한 정보가 없는 메세지의 송/수신자가 서로 필요한 요청과 응답을 할 수 있도록 미리 규약을 정해놓은 것을 “프로토콜”이라고 하고, 웹 상에서는 HTTP 라는 프로토콜을 통해서 데이터를 송/수신 하고 있다.
RESTful API란?
- Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
- REST 아키텍처 스타일을 따르는 API를 REST API라고 한다.
- REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 한다.
스프링 입문 1-1 SpringBoot 및 서버 이해
소프트웨어 디자인 패턴(software design pattern)
- 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책
- 소스나 기계 코드로 바로 전환될수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿
레이어드 아키텍처 패턴
Presentation 계층
- 사용자와 상호 작용 처리 계층
- CLI, HTTP 요청, HTML 처리 등을 담당
- HTTP 요청 처리 및 HTML 렌더링에 대해 알고 있는 웹 계층
- 흔히 말하는 MVC (Model / View / Controller) 도 이 계층에 속한다.
Domain(Business or Service) 계층
- 서비스/시스템의 핵심 로직
- 유효성 검사 및 계산을 포함하는 Business 논리 계층
- 애플리케이션이 수행해야하는 도메인과 관련된 작업들을 담당한다.
- 입력/저장된 데이터를 기반으로 계산
- Presentation 계층에서 받은 데이터의 유효성 (Validation) 검사
- 어떤 Data Access 를 선택할지 결정
Data Access(Persistence) 계층
- DAO 계층
- Database / Message Queue / 외부 API와의 통신 등 처리
- 데이터베이스 또는 원격 서비스에서 영구 데이터를 관리하는 방법을 분류하는 데이터 접근 계층
스프링 입문 1-2 Database와 SQL
Database
- ‘데이터의 집합’
- DB는 우리가 매일 사용하는 카톡 메시지, 인스타그램의 사진등의 정보를 저장하고 관리한다.
DBMS
- DBMS 는 ‘Database Management System’ 의 약자로 Database를 관리하고 운영하는 소프트웨어를 의미
RDBMS
- RDBMS는 ‘Relational DBMS’의 약자로 관계형 데이터베이스를 의미
- RDBMS는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있다.
- 종류로는 H2(연습용), MySQL, PostgreSQL, Oracle Database 등이 있다.
SQL
- SQL은 ‘Structured Query Language’ 의 약자로 RDBMS에서 사용되는 언어
- DBMS를 만드는 회사가 여러 곳이기 때문에 DBMS 마다 표준 SQL을 준수하되, 각 제품의 특성을 반영하기 위한 약간의 차이가 존재
DDL
- ‘Data Definition Language’ 의 약자로 테이블이나 관계의 구조를 생성하는데 사용
- CREATE : 새로운 데이터베이스 및 테이블을 생성
- ALTER : 데이터베이스와 테이블의 내용을 수정
- DROP : 데이터베이스와 테이블을 삭제, 데이터 및 테이블 전체를 삭제
- TRUNCATE : 데이터베이스와 테이블을 삭제하여 최초 테이블이 만들어졌던 상태 즉, 컬럼값만 남깁니다.
DCL
- ‘Data Control Language’ 의 약자로 데이터의 사용 권한을 관리하는데 사용
- GRANT : 사용자 또는 ROLE에 대해 권한을 부여
- REVOKE : 사용자 또는 ROLE에 부여한 권한을 회수
DML
- ‘Data Manipulation Language’ 의 약자로 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용
- INSERT : 테이블에 새로운 row를 추가
- SELECT : 테이블의 row를 선택
- UPDATE : 테이블의 row의 내용을 수정
- DELETE : 테이블의 row를 삭제
CREATE
제약조건
- AUTO_INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성해
- NOT NULL : 해당 필드는 NULL 값을 저장할 수 없게 된다.
- UNIQUE : 해당 필드는 서로 다른 값을 가져야만 한다.
- PRIMARY KEY : 해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 된다.
- FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장
- CASCADE : FOREIGN KEY 로 연관된 데이터를 삭제,변경
스프링 입문 1-3 JPA 기초
ORM, JPA의 등장
ORM
- 패러다임 불일치에서 기인한 문제들과, 반복적이고 번거로운 어플리케이션 단에서의 쿼리 작업을 줄여주기 위해서 ORM(객체 관계 매핑)기술들이 등장
JPA
- 자바 ORM 기술에 대한 표준 명세
- 쿼리를 자동으로 생성
- 어플리케이션 계층에서 sql 의존성을 줄여서 번거로운 작업이 단축
- 패러다임의 불일치를 해결
- 특정한 상황을 제외하고 성능 최적화
- 방언의 지원. h2 Databse를 붙여도, mySql, oracle 뭘 붙여도 코드의 변경은 없다, 관계형 db이자 표준을 준수한 sql을 지원한다면, jpa가 방언들도 알아서 처리
Spring Data JPA란?
- JPA 를 편리하게 사용하기 위해, 스프링에서 JPA 를 Wrapping
- 스프링 개발자들이 JPA 를 사용할 때 필수적으로 생성해야 하나, 예상 가능하고 반복적인 코드들 → Spring Data JPA 가 대신 작성
- Repostiory 인터페이스만 작성하면, 필요한 구현은 스프링이 대신 알아서 구현