본문 바로가기
항해99

[WIL] 항해 4주차

by yeaseul912 2022. 8. 7.
728x90

한주를 회고하며..

이번주에는 항해 선배가 오셔서 고민상담소를 열어주셨다.

항해를 어떻게 해쳐나갔는지 부터 취업하고 그 이후까지 많은 이야기를 해주셨다.

몇가지 기억에 남는건

  • 항해 할때 절대 편하게 하지 말것.!!
  • 무조건 늦게까지 남아서 3개월동안 배운거 평생 써먹는다 생각할 것!!
  • 월요일까지 과제 마치고 주어진거 이외에 추가로 더 공부할것!!
  • 사람들이랑 커뮤니케이션 많이 할것! 서로서로 배우는 취지로

 - 항해 초반에 쉬운 내용들이 나와서 9시에 칼퇴(?)를 했었다. 하지만 점점 어려운 내용들이 나오면서 과제 제출이 늦어지고 마음이 조급해지고 철야(?)를 하는 횟수가 많아져서 힘들었다. 근데 선배가 하는 말을 들으니 칼퇴를 하던 시절이 너무 아깝게 느껴졌다. 그때 좀 더 했어야 했는데! 이런 생각.. 이 많이 들었고 확실히 이제는 철야가 익숙하고 당연하다. 오히려 안하면 불안할 정도. 이렇게 적응해버린게 무섭기도 하다. 그래도 다행히 항해 사람들이랑 커뮤니케이션은 많이 해본것 같다. 꽤 다들 친하다 !! 암튼 앞으로 더 열심히 해야겠다.!

 

ORM 이란?
  • Object Relational Mapping(객체-관계-매핑)
  • 프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 도구
  • 프로그래밍 언어의 객체와 관계형 데이터베이스 사이의 중계자 역할을 한다.
  • MVC패턴에서 Model을 기술하는 도구이다.

 

ORM 을 사용하는 이유

  • OOP에서는 클래스를 이용하고, 관계형 데이터베이스는 테이블을 이용하는데 객체 모델과 관계형 모델 간의 불일치가 존재한다.
  • ORM을 통해 데이터베이스 접근시 프로그래밍 언어의 관점에서 맞출 수 있다.
  • ORM을 통해 객체 간의 관계를 바탕으로  SQL을 자동으로 생성하여 불일치를 해결한다.
  • ORM을 통해 SQL문을 직접 작성하지 않고 엔티티를 객체로 표현할 수 있다.
  • 객체를 통해 간접적으로 데이터베이스를 다룬다.

 

ORM의 장점

  1. 직관적인 코드(가독성) + 비즈니스 로직 집중 가능(생산성)
    • ORM을 이용하면 SQL Query가 아닌 메서드로 데이터를 조작할 수 있다.
    • 프로그래머가 객체 모델로 프로그래밍하는 것에 더 집중할 수 있게 도와준다.
    • 각종 객체에 대한 코드를 별도로 작성하기 때문에 코드 가독성을 높여준다.
    • SQL의 절차적이고 순차적인 접근이 아닌 객체 지향적인 접근으로 생산성이 증가한다.
  2. 재사용 및 유지보수 편리성 증가
    • ORM은 디자인 패턴을 견고하게 만드는데 유리하다.
    • ORM은 독립적으로 작성되었고 해당 객체들을 재활용 할 수 있다.
  3. DBMS에 대한 종속성 저하
    • 객체 간 관계를 바탕으로 SQL을 자동으로 생성하기 때문에 RDBMS의 데이터 구조와 프로그래밍 언어의 객체 모델 사이의 간격을 좁힌다.
    • ORM솔루션은 DB에 종속적이지 않다.
    • 프로그래머는 Object에 집중하므로 DBMS를 다루는 큰 작업에도 비교적 적은 리스크와 시간만 소요할 수 있다.

ORM의 단점

  1. 설계를 신중하게 해야한다.
  2. 프로젝트의 복잡성이 커질 경우 난이도 또한 올라간다.
  3. 잘못 구현된 경우 일관성이 무너지는 문제점이 생길 수 있다.
SQL

RDBMS의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어

ORM을 쓴다면 실제로 SQL을 다루는 일이 적다. 하지만 그렇다고 해서 백엔드 개발자가 SQL을 모르면 안된다.!

 

MySQL의 SQL종류와 대표적인 SQL문의 예제를 가지고와봤다.

 

DML(Data Manipulation Language)
데이터 조작어
Database Table 안에 들어있는 값을 조작 Select, Insert, Update, Delete
DDL(Data Definition Language)
데이터 정의어
Table과 같은 데이터 구조를 정의하는데 사용되는 명령어(테이블 생성, 변경, 삭제, 이름변경) Create, Alter, Drop, Rename, Truncate
DCL(Data Control Language)
데이터 제어어
Database에 접근하여 데이터를 사용할 수 있도록 권한을 부여/회수하는 명령어 Grant, Revoke
TCL(Transaction Control Language)
트랜잭션 제어어
논리적인 작업의 단위를 묶어서 데이터의 결과를 작업단위(트랜잭션)로 제어하는 명령어 Commit, Rollback, SavePoint

 

DML

가져오기 : Select {가져올 데이터의 컬럼 명} From {table명}

            ex) Select username, address From user

삽입하기 : Insert into {테이블명}({컬럼명}) Values({넣을 값})

            ex) Insert into user(username, address) Values(yeaseul, Seoul)

수정하기 : Update {table명} Set {filed1}='{value1}', {filed2}='{value2}'

            ex) Update user Set  username='kimyeaseul', address='Busan'

삭제하기 : Delete From {table명}

            ex) Delete From user

더욱 자세한건.. --> http://www.tcpschool.com/mysql/mysql_operator_arithmetic

 

MVC 패턴

Model View Controller 으로 구성

소프트웨어 설계와 관련된 디자인 패턴의 한 종류

소프트웨어가 서비스하는 방식에 대한 패턴을 지칭

 

특징

소프트웨어가 서비스하기 위해서 여러 과정과 처리가 필요하다.

이러한 처리들을 각 기능 단위 별로 나눠서 처리한다.

프로그래밍을 할 때 역할을 하는 정돈된 코드를 작성할 수 있다.

디버깅이나 코드 가독성을 높인다.

 

Flow

Model View Controller
데이터베이스에서 데이터를 가지고 올 수 있고 데이터를 가지고 있을 수도 있다.
데이터베이스와 소통한다.
Controller에게 데이터를 전달한다.
Model이 View와 직접 소통하는 일은 없다.
유저가 보는 화면을 보여주게 하는 역할이다.
데이터를 받고 그리는 역할을 수행한다.
Controller와만 소통한다.
Controller에게 액션이나 데이터를 전달만 하고 전달 받기만 한다.
View에서 액션과 이벤트에 대한 인풋 값을 받는다.
Model에게 전달해주기 전에 데이터를 가공할 수 있다.
Model에서 받은 데이터를 가공할 수 있다.

 

Reference

[데이터베이스] ORM이란?

MVC란?(MVC design pattern)

반응형

'항해99' 카테고리의 다른 글

[TIL] 항해 31일차  (0) 2022.08.11
[TIL] 항해 30일차  (0) 2022.08.11
[TIL] 항해 25일차  (0) 2022.08.05
[TIL] 항해 24일차  (0) 2022.08.04
[TIL] 항해 23일차  (0) 2022.08.04

댓글