항해99 회고록 리스트
- [항해99 4기] 1주 차 미니 프로젝트 - WIL
- [항해99 4기] 2주 차 알고리즘 - WIL
- [항해99 4기] 3주 차 주특기 기초(스프링) - WIL
- [항해99 4기] 4주 차 주특기 숙련(스프링) - WIL
- [항해99 4기] 5주 차 주특기 심화(스프링) - WIL
- [항해99 4기] 6주 차 팀 프로젝트(리액트, 스프링) - WIL
- [항해99 4기] 7주 차 팀 프로젝트(클론코딩) - WIL
- [항해99 4기] 8주 차 실전프로젝트 - WIL
- [항해99 4기] 9주 차 실전프로젝트 - WIL
- [항해99 4기] 10주 차 실전프로젝트 - WIL
- [항해99 4기] 11주 차 실전프로젝트 - WIL
- [항해99 4기] 12주 차 실전프로젝트 - WIL
- [항해99 4기] 13주 차 실전프로젝트 - WIL
- [항해99 4기] 14주 차 지원하기 - WIL
# 이번 주에 한 것(느낀 점)
https://spartacodingclub.kr/online/spring_plus
항해99에서 제공하는 스프링 심화반 강의를 5주 차까지 듣고 과제를 진행했습니다.
저번 주에는 스프링 기초반 강의를 들으면서 궁금한 점이 너무 많았습니다.
그 문제들을 이번 주차에 많이 해결할 수 있었다고 생각합니다.
개인과제를 진행하면서 정말 많이 배운 한주였습니다.
간단한 게시판을 만드는 프로젝트였지만, 강의에서 나오는 내용이 잘 담겨있는 과제였다고 느꼈습니다.
# 부족한 점
스프링을 하기 전 자바 문법과 객체지향에 대한 개념이 많이 부족하다는 걸 알았습니다.
그래도 막연하게 부족하다는 점만 느낀 게 아니라, 어떻게 이 부족한 점을 채워 나갈지 알게 되었습니다.
이 부족한점을 채우기 위해 자바의 정석, 토비의 스프링을 간단하게 하루에 10p 씩 읽을 예정입니다.
그리고 과제를 진행하면서 어떻게든 시간을 만들어 항해99 4기 동기분과 스터디를 할 예정입니다.
단순히 생각과 의지로만 하겠다는 것보다는 글로 목표를 남기는게 더 좋다고 생각해서 남깁니다.
다음주도 화이팅!
이번 주 WIL 키워드
# ORM (Object Relational Mapping)
ORM은 Object Relational Mapping 즉, 객체-관계 매핑의 줄임말이다.
객체-관계 매핑을 풀어서 설명하자면 우리가 OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블 자동으로 매핑(연결)하는 것을 의미한다.
그러나 클래스와 테이블은 서로가 기존부터 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하는데, 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다.
따라서 ORM을 이용하면 따로 SQL문을 짤 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다.
ORM이 모든 걸 해결해줄 수 없다.
ORM을 사용하는 것은 매우 편리하지만 그만큼 신중하게 설계해야한다.
프로젝트의 복잡성이 커질 수록 난이도도 올라가고 부족한 설계로 잘못 구현되었을 경우 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있다. 또한 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야할 수도 있다.
# SQL (Structured Query Language)
SQL은 관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어입니다.
1970년대에 IBM에서 최초 개발되었으며 관계형 모델이라는 이론에서 파생된 특징을 가지고 있는데,
현재 SQL의 표준으로 ANSI SQL이 정립되었습니다.
각 DBMS 프로그램에서 ANSI SQL을 기반으로 개발된 개별 SQL을 사용하며 근소한 차이를 보입니다.
SQL 문법의 종류 3가지
- DDL (Data Definition Language, 데이터 정의 언어)
-> 각 릴레이션을 정의하기 위해 사용되는 언어 (CREATE, ALTER, DROP...) - DML (Data Manipulation Language, 데이터 조작 언어)
-> 데이터를 추가 / 수정 / 삭제하기 위한, 즉 데이터 관리를 위한 언어입니다. (SELECT, INSERT, UPDATE...) - DCL (Data Control Language, 데이터 제어 언어)
-> 사용자 관리 및 사용자별로 릴레이션 또는 데이터를 관리하고 접근하는 권한을 다루기 위한 언어
(GRANT, REVOKE...)
# MVC (Model - View - Controller)
M -> Model
- '데이터' 디자인을 담당한다.
-> ex. 상품 목록, 주문 내역 등
V -> View
- '실제로 렌더링되어 보이는 페이지'를 담당한다.
C -> Controller
- 사용자의 요청을 받고, 응답을 주는 로직을 담당한다.
-> GET 등의 uri 매핑이 여기에 해당된다.
스프링의 흐름
- client가 요청을 한다.
- DispatcherServlet 이 요청을 받는다.
- DispatcherServlet이 Controller에게 요청을 하고, 응답을 받는다.(ModelAndView를 이용)
- ViewResolver와 View를 통해 사용자에게 페이지를 띄어준다.
참고 자료