로운's 기술노트

[항해 5기] 4주차 Week I Learned (ORM, SQL, MVC) 본문

항해99_'22.01~04

[항해 5기] 4주차 Week I Learned (ORM, SQL, MVC)

로운's 2022. 2. 6. 23:59

■ ORM

ㅇ 개념

- 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다.
  1) 객체지향 프로그램은 클래스를 관계형 데이터베이스는 테이블을 사용한다.
  2) 객체 모델과 관계형 모델 간의 불일치가 존재, ORM을 통해 객체 간의 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
- 데이터베이스 <- 매핑 -> Object

 

ㅇ 장점
객체 지향적인 코드와 비즈니스 로직에 더 집중할 수 있다. SQL 쿼리가 아닌 객체 모델로의 프로그래밍에 더욱 집중하고 코드에 집중하기에 가독성을 올려준다.
재사용 및 유지보수의 편리성이 증가한다. ORM이 독립적으로 작성되어 있어 해당 객체들을 재활용할 수 있다. 때문에 모델에서 가공된 데이터로 디자인패턴을 견고하게 유지할 수 있다.
DBMS에 대한 종속성이 줄어든다. SQL을 자동으로 생성하기 때문에 DBMS의 데이터 구조와 Java의 객체지향 모델 사이의 간격을 좁힐 수 있다. 또한 자바의 기능을 이용할 수 있고, 간결하고 빠른 가공이 가능하다.

 

ㅇ 단점
완벽한 ORM으로만 서비스를 구현하기 어렵다. 사용하기는 편하지만 설계는 매우 신중하게 해야 하고, 프로젝트의 복잡성이 커질수록 난이도도 올라간다.
프로시저가 많은 시스템에서는 ORM의 객체 지향적인 장점을 활용하기 어렵다. 프로시저가 많은 시스템에선 다시 객체로 바꿔야하며, 이 과정에서 생산성 저하나 리스크가 많이 발생한다.

 

 

■ SQL

ㅇ 개념

RDBMS에 저장된 데이터와 통신하기 위해 필요한 프로그래밍 언어이다.

ㅇ 명령어
- DDL : 데이터베이스 스키마와 설명을 처리를 정의하는 언어, 데이터베이스 테이블 생성/변경/삭제 등의 작업을 포함한다.(CREATE, ALTER, DROP 등)
- DML : 데이터 검색, 삽입, 변경, 삭제를 수행하여 조작하는 언어, 저장된 데이터에 처리할 때 사용한다.(SELECT, INSERT, UPDATE, DELETE 등)
- DCL : 데이터에 접근할 수 있는 권한을 관리하는 언어이다.(GRANT, REVOKE)
- TCL : 트랜잭션을 다루는 언어이다.(COMMIT, ROLLBACK, SAVEPOINT 등)

 

ㅇ 데이터 타입
- varchar(size): 최대 크기 255자의 문자를 저장한다. 문자열의 길이는 가변적이다.
- int(m) : m은 정수의 크기가 아닌 자릿수 개수이다.
- bigint(m) : m은 정수의 크기가 아닌 자릿수 개수이다.
- float(m, d) : m은 정수 자릿수, d는 소수점 아래 자릿수 개수이다.
- date : 'YYYY-MM-DD'로 표기된다.
- time : 'HH:MM:SS'로 표기된다.

 

 

■ MVC

- MVC 패턴이란 애플리케이션을 크게 모델(Model, View, Controller)의 세 영역으로 구분하고 영역 간의 결합도를 최소화 패턴이다.
- Model 영역은 애플리케이션에 비즈니스 로직과 사용되는 데이터를 다루는 영역이다. 일반적으로 비즈니스 데이터는 데이터베이스에 의해 관리되고, 그 데이터를 다루는 연산은 SQL문을 통해서 구현된다.
- View 영역은 최종 사용자에게 보여줄 프리젠테이션 로직을 담당하는 영역이다. 일반적으로 자바 웹 애플리케이션에서는 JSP를 통해서 구현된다.
- Controller 영역은 흐름을 관리하는 역할을 하며, 모델과 뷰 영역간의 조정 역할을 한다. 사용자의 요청을 받아 이를 수행하기 위한 비즈니스 로직을 선택하고 호출하며, 수행한 비즈니스 로직의 결과를 보여주기 위해 뷰를 선택하여 포워드 해주는 역할을 한다.
- Controller 영역이 모델과 뷰를 이어주는 역할을 할 수 있지만, View 영역과 동일하게 기능할 수도 있다. 이 경우 프리젠테이션로직과 비즈니스로직의 분리가 어렵고 뷰의 재활용성이 떨어진다.
- View(JSP)와 Controller 를 분리하게 된다면 개발 초기의 부하가 비교적 높고, 아키텍처에 대한 수준 높은 이해를 요구하지만, 재사용성이 높고 확장이 용이하다는 장점이 있다.

 

 

[참조]

https://velog.io/@sk0726/TIL-13-SQL%EA%B3%BC-ORM-%EA%B7%B8%EB%A6%AC%EA%B3%A0-MVC%EB%9E%80

https://yuricoding.tistory.com/89

Comments