-
[0주차] 1~3강스파르타 강의 정리 2023. 10. 30. 20:36
풀집중하여 완강까지 했지만
새 강의가 재지급되며
사실상 Deprecated 되었다.
삭제하긴 좀 그래서 0주차로 변경
강의 첫번째.
프로토콜 (Protocol)
원격에서 서로에 대한 정보가 없는 메세지의 송/수신자가 서로 필요한 요청과 응답을 할 수 있도록
미리 규약을 정해 놓은것.
웹상에서는 HTTP라는 프로토콜을 통해 데이터를 송/수신하고 있다.
API (Application Programmng Interface)
다른 소프트웨어 시스템과 통신하기 위해 따라야하는 규칙을 정의한 것
웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있다.
인터페이스(Interface)
서로 다른 두개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면.
즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.
컴퓨팅에서 컴퓨팅 시스템끼리 정보를 교환하는 공유경계이며, 이러한 교환은 서로 복합적으로 이루어질 수도 있다.
RESTful API 란?
Representational State Transfer (REST)는 API 작동방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다.처음에는 인터넷 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다.
쉽게 구현하고 수정할 수 있기 때문에 여러 플랫폼에서 사용하고 있다.
REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹서비스라고 한다.
기타
웹에서 클라이언트와의 모든 요청이 약속된 방식으로 들어오고, 모든 응답도 이에 맞춘 양식으로 답변한다면
이 요청들을 일괄적으로 처리할 수 있다.
최근의 서버는 서버가 직접 뷰를 반환하기보다 요청에 맞는 특정한 정보만 반환하는 것을 더 선호한다.
그래서 요즘 서버는 JSON 형태로 데이터만 반환하기도 한다.
강의 두번째.
소프트웨어 디자인 패턴
소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책.
소스나 기계코드로 바로 적용할 수 있는 완성된 디자인은 아니며, 여러 상황에 적용가능한 문제들을 해결하는데
쓰이는 템플릿이다.
디자인패턴은 프로그래머가 애플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데 쓰이는
형식화된 좋은 관행이다.
스프링의 기본 3계층
각각의 계층은 독립적으로 분리될 수 있도록 구현해야하고, 각 계층은 일반적으로 인터페이스를 사용해서 통신한다.
Presentation Layer
- 사용자와 시스템 간의 상호작용을 관리한다
- CLI, HTTP, HTML 처리를 담당
- MVC가 이 계층에 속한다.
- 스프링에서 @Controller 어노테이션을 사용하여 표현Service Layer
- 서비스/ 시스템의 핵심로직
- 유효성 검사 및 계산을 포함하는 비즈니스 논리 계층
ex. 주문, 결제 등
- 데이터액세스 계층과 프리젠테이션 계층을 연결하는 역할
그래서 다른 계층과 통신하기 위한 인터페이스를 제공한다.
- Service 인터페이스와 @Service 어노테이션을 사용하여 표현Data Access Layer
- DAO 계층.
- Database / Message Queue / 외부 API와의 통신 등을 처리
- 데이터의 CRUD를 한다.
- ORM (Object Realtional Mapping) 프레임워크를 주로 사용하는 계층
- @Repository 어노테이션을 사용해서 표현한다.기타
우리가 스프링/ 스프링부트를 사용하는 이유
-> 가장 많이 꼽는 이유로는 단순 반복작업이 많았던 Controller와 Repository 쪽을
개발관점에서 매우 쉽고 편리하게 처리 해주기 때문에 가장 중요한 핵심 비즈니스 로직인
Service 레이어에 더 집중할 수 있도록 해준다.
강의 세번째.
DDL. Data Definition Language
데이터베이스 구조를 정의하거나 변경하는데 사용한다.주요 명령어 : CREATE ALTER DROP TRUNCATE 등
DCL. Date Control Language
데이터베이스 사용권한 관리와 보안을 다루는데 사용한다.주요 명령어
GRANT : 특정 사용자에게 데이터베이스에 대한 권한 부여REVOKE : 특정 사용자에게 부여된 권한 회수.
DML. Date Manipulation Language
CRUD에 사용
INSERT, SELECT, UPDATE, DELETE기타
JOIN을 안써도 똑같이 동작하게 할 수 있다. 일반적으로 join을 사용하여 FROM A JOIN B ON A.asd = B.asd; 이런식으로 사용하였는데 FROM A, B WHERE A.asd = B.asd; 이렇게 해도 똑같은 결과를 출력한다.
문제 해결 중 헷갈렸던 부분
select s.name , e.EXAM_SEQ, e.SCORE from MANAGER m join student s on m.student_code = s.student_code join exam e on m.STUDENT_CODE = e.STUDENT_CODE where m.name = 'managerA' ; 이 코드는 정상적으로 잘 실행되었다. select s.name , e.EXAM_SEQ, e.SCORE from MANAGER m join exam e on m.STUDENT_CODE = e.STUDENT_CODE where m.name = 'managerA' join student s on m.student_code = s.student_code; 하지만 처음에 작성한 이 코드는 student s 를 찾지못하는 에러가 떴다. 이것은 where절의 위치 때문에 발생한 에러로써 where이 먼저 적용되어서 뒤에 따라오는 student에서 관련된 데이터를 찾을 수가 없었기 때문이다.
쿼리를 작성할때 JOIN 및 조건절의 순서는 결과에 큰 영향을 미치기 때문에
이 부분을 작성할때는 주의깊게 작성해야한다.
'스파르타 강의 정리' 카테고리의 다른 글
회원가입 구현 및 Filter (0) 2023.11.08 3-5, 3-6 JWT (0) 2023.11.07 3-3, 3-4 인증과 인가 / 쿠키와 세션 (0) 2023.11.07 3-1, 3-2 Bean 수동등록, 같은 타입의 Bean이 여러개 라면? (0) 2023.11.07 [1주차] 새로배운 것들 정리 (1) (0) 2023.11.01