Weekly I Learned 4주차

2022. 10. 17. 14:21Weekly I Learned (WIL)

728x90
SMALL

[기간]

- 10월 10일 ~ 10월 15일

 

 

[Weekly I Learned ( 4주차 후기)]

너무나도 큰 멘붕이였다...

JWT라는 spring security 에 대한 학습내용을 구현하고자 하는 주차였는데, 갑자기 많아져버린 코드량과 학습량 떄문에 이해도 완전히 되지 않았고, 그 상태에서 시험을 치루니, 좋은 결과는 꿈도 꿀 수 없었다..

그래서 이번 주의 WIL 은 평소처럼 매일마다 배웠던 것들을 일기형식으로 작성하는 것이 아닌 이번 주차를 관통하는 핵심 키워드 몇가지를 추려서 작성하고자 한다.

 

1. ORM

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

즉, 객체 지향적 프로그래밍에 알맞는 매핑이다.

 

 

[ORM 장점]

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

 

[ORM 단점]

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

 

 

2. SQL

SQL은 관계형 데이터베이스 시스템(RDBMS) 에서 자료 및 데이터를 관리 및 처리하기 위해 설계된 언어이다.

즉, 우리가 과제를 진행하면서 JPA 를 활용하여 DB에 대한 관리를 할 수 있는 것처럼, 이에 대한 동작을 수행해주는 언어이다.

 

[SQL 종류]

- DQL

DQL은 데이터베이스에서 데이터를 가져오는 데 사용된다.

SELECT 명령으로만 구성된다.

 

- DDL

데이터 세트를 업데이트하거나 조작하는 데 사용된다.

DDL에 포함된 명령은 CREATE, DROP, RENAME 및 ALTER 이다.

 

- DML

DML의 목표는 데이터베이스 수정을 가능하게 하는 것이다.

INSERT, UPDATE 및 DELETE 명령어를 사용한다.

 

- TCL

TCL은 DML과 직접 연결된다. 변경 사항을 논리적 트랜잭션으로 그룹화할 수 있도록 DML에서 수행한 수정 사항을 관리한다. DQL에 포함된 명령은 COMMIT, ROLLBACK 및 SAVEPOINT이다

 

- DCL

이름에서 알 수 있듯이 DCL은 관계형 데이터베이스에서 권한 매개변수를 설정하는 데 사용된다

GRANT 및 REVOKE는 DCL의 두 가지 주요 명령이다.

 

 

# 우리가 현재 사용하고 있는 JPA 는 직접적인 쿼리문을 작성하지 않고 단축된 명령어로 동일한 동작을 수행할 수 있게끔 해준다.

 

 

 

3. MVC

모델-뷰-컨트롤러는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다.

사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.

MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

 

Model

  • Model은 Data와 애플리케이션이 무엇을 할 것인지를 정의하는 부분으로 내부 비즈니스 로직을 처리하기 위한 역할을한다.
  • 즉, 모델은 컨트롤러가 호출을 하면 DB와 연동하여 사용자의 입출력 데이터를 다루는 일과 같은 데이터와 연관된 비즈니스 로직을 처리하는 역할을 한다.
  • 데이터 추출, 저장, 삭제, 업데이트 등의 역할을 수행한다.
  • 사용자가 편집하기를 원하는 모든 데이터를 가지고 있어야 한다.
  • 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.

View

  • View는 사용자에게 보여주는 화면(UI)이 해당된다.
  • 사용자와 상호작용을 하며 컨트롤러로부터 받은 모델의 결과값을 사용자에게 화면으로 출력하는 일을 한다.
  • MVC에서는 여러개의 View가 존재할 수 있다.
  • Model에서 받은 데이터는 별도로 저장하지 않는다.
  • Model이나 Controller와 같이 다른 구성요소들을 몰라야한다.
  • 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야만 한다.

 

Controller

  • Controller는 Model과 View 사이를 이어주는 인터페이스 역할을 한다.
  • 즉, Model이 데이터를 어떻게 처리할지 알려주는 역할을 한다.
  • 사용자로부터 View에 요청이 있으면 Controller는 해당 업무를 수행하는 Model을 호출하고 Model이 업무를 모두 수행하면 다시 결과를 View에 전달하는 역할을 한다.
  • Model이나 View에 대해서 알고 있어야 한다.
  • Model이나 View의 변경을 모니터링 해야 한다.
728x90
반응형
LIST

'Weekly I Learned (WIL)' 카테고리의 다른 글

Weekly I Learned 6주차  (0) 2022.10.30
Weekly I Learned 5주차  (0) 2022.10.23
Weekly I Learned 3주차  (0) 2022.10.03
Weekly I Learned 2주차  (0) 2022.09.27
Weekly I Learned 1주차  (0) 2022.09.26