[WIL] 항해99 4주차

woonie·2022년 2월 6일
0

WIL

목록 보기
4/12
post-thumbnail

항해 4주차 마무리

스프링을 하기 전 자바 문법과 객체지향에 대한 개념이 많이 부족하다는 걸 알았다.
그래도 막연하게 부족하다는 점만 느낀 게 아니라, 어떻게 이 부족한 점을 채워 나갈지 알게 되었다.
이 부족한점을 채우기 위해 자바의 정석을 다시 보게되었고, 스프링에 부족한 부분은 공식 문서를 많이 보려고 한다.(영어가 많이 약하지만...천천히 꼼꼼히 보려고한다)

1. ORM (Object Relational Mapping)

  • 객체-관계 매핑을 풀어서 설명하자면 우리가 OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블 자동으로 매핑(연결)하는 것을 의미한다.

  • 그러나 클래스와 테이블은 서로가 기존부터 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하는데, 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다.
    따라서 ORM을 이용하면 따로 SQL문을 짤 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다.

ORM이 모든 걸 해결해줄 수 없다.

ORM을 사용하는 것은 매우 편리하지만 그만큼 신중하게 설계해야한다.
프로젝트의 복잡성이 커질 수록 난이도도 올라가고 부족한 설계로 잘못 구현되었을 경우 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있다. 또한 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야할 수도 있다.

2. 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, 데이터 제어 언어)
    -> 사용자 관리 및 사용자별로 릴레이션 또는 데이터를 관리하고 접근하는 권한을 다루기 위한 언어

3. MVC (Model - View - Controller)

M -> Model

'데이터' 디자인을 담당한다.
-> ex. 상품 목록, 주문 내역 등

V -> View

'실제로 렌더링되어 보이는 페이지'를 담당한다.

C -> Controller

사용자의 요청을 받고, 응답을 주는 로직을 담당한다.
-> GET 등의 uri 매핑이 여기에 해당된다.

참고

profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.

0개의 댓글