TIL - 22.12.05

0

TIL

목록 보기
26/126

스프링 입문 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 인터페이스만 작성하면, 필요한 구현은 스프링이 대신 알아서 구현

0개의 댓글