Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Port already in use: 9999
- 쿠버네티스 패턴
- Exception Handing
- 객체
- 웹 애플리케이션 아키텍처
- 선언적 배포
- redis 명령어
- Oracle.DatabaseError
- kafkaCLI
- docker
- apt-rdepends
- abstract 제어자
- 예측 범위 내의 요구사항
- 도커
- ubuntu redis
- 포함 관계
- 오프라인 설치
- 자료구조
- REST 성숙도 모델
- 특정 행 출력
- image 압축
- 폐쇄망
- 의존성 설치
- redis 설정
- 웹 애플리케이션 요청 흐름
- redis 외부설정
- 의존성 패키지 설치
- 예외 전가
- SQL 내장 함수
- 특정 행
Archives
- Today
- Total
리꾸므
4주차_회고 본문
4주차 keyword : ORM, SQL, MVC
ORM(Object Relational Mapping)이란?
객체와 관계형 데이터베이스의 데이터를 자동으로 연결해주는것을 말한다. 객체지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용하며 객체 모델과 관계형 모델 간에 불일치가 존재한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동생성하여 불일치를 해결하는 것이다.
장점
- 객체지향적인 코드로 더 직관적이고 비즈니스 로직에 집중 할 수 있게 도와준다
- ORM을 이용하면 SQL Query가 아닌 메서드로 데이터를 조작할 수 있어 객체 모델로 프로그래밍하는걸 돕는다.
- 선언문,할당,종료같은 부수적인 코드가 없거나 급격히 감소한다.
- 각종 객체에 대한 코드를 별도로 작성하기 떄문에 코드의 가독성을 올려준다
- SQL의 절차적이고 순차적인 접근이 아닌 객체지향적인 접근으로 생산성이 증가한다
- 재사용 및 유지보수의 편리성이 증가한다.
- ORM은 독립적으로 작성되어있고, 해당 객체들을 재활용 할 수 있다.
- 모델에서 가공된 데이터를 컨트롤러에 의해 뷰와 합쳐지는 형태로 디자인 패턴을 견고하게 다지는데 유리하다.
- 매핑정보가 명확하여, ERD를 보는 것에 대한 의존도를 낮출 수 있다.
- DBMS에 대한 종속성이 감소한다.
- 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하기 때문에 RDBMS의 데이터 구조와 Java의 객체지향 모델 사이의 간격을 좁힐 수 있다.
- ORM솔루션은 대부분 DB에 종속적이지 않다.
- 구현방법뿐 아니라 솔루션에서 자료형 타입까지 유효하다
- 자바에서 가공할경우 equals, hashCode의 오버라이드 같은 자바의 기능을 이용할 수 있고, 간결하고 빠른 가공이 가능하다.
단점
- 완벽한 ORM으로만 서비스 구현하기는 어렵다.
- 사용은 쉽지만 설계는 매우 신중해야한다.
- 프로젝트 복잡성이 커질경우 난이도 또한 올라간다.
- 잘못구현될경우 일관성이 무너질 수 있다.
- DBMS의 고유기능을 이용하기 어렵다
- 프로시저가 많은 시스템에서 ORM의 객체지향적인 장점을 활용하기 어렵다.
SQL(Structured Query Language)이란?
관게형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 프로그래밍 언어
언어적 특성
- SQL은 기본적으로 대소문자를 구분하지 않지만, 서버 환경이나 DBMS 종류에 따라 데이터베이스 또는 필드명에 대해 대소문자를 구분하기도 한다.
- SQL 명령은 반드시 세미콜론(;)으로 끝나야 한다.
- 고유값은 따옴표(")로 감싼다.
- SQL에서 객체는 백틱(``)으로 감싼다
- 주석은 일종의 도움말로, 주석처리된 문장은 프로그램에서 동작하지 않는다 한줄주석은 문장앞에 --추가, 여러 줄은/* */로 감싼다.
명령어
- DDL(Data Definition Language, 데이터 정의 언어)
- 데이터베이스 스키마와 설명을 처리하도록 정의하는 언어 테이블/생성/변경/삭제 등의 작업이 포함
- CREATE(데이터베이스 개체(테이블,인덱스,제약조건 등)의 정의
- DROP(데이터베이스 개체 삭제)
- ALTER(데이터베이스 개체 정의 변경)
- DML(Data Manipulation Language, 데이터 조작 언어)
- 데이터 검색,삽입,변경,삭제 수행을 조작하는 언어, 실질적으로 저장데이터를 관리하고 처리할때 사용
- SELECT(테이블 데이터의 검색 결과 집합의 취득)
- INSERT(행 데이터 또는 테이블 데이터의 삽입)
- DELETE(데이터의 삭제)
- UPDATE(표 업데이트)
- DCL(Data Control Language, 데이터 제어 언어)
- 사용자 관리 및 사용자별 릴레이션 또는 데이터를 관리하고 접근하는 권한을 다루기 위한 언어
- COMMIT: 트랜잭션의 작업 결과 반영
- ROLLBACK: 트랜잭션의 작업을 취소 및 원래대로 복구
- GRANT: 사용자에게 권한 부여
- REVOKE: 사용자 권한 취소
MVC(Model, View, Controller)이란?
모델, 뷰 ,컨트롤러는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트 웨어 디자인 패턴입니다. 소프트웨어 비즈니스 로직과 화면을 구분, 이러한 관심사 분리는 더 나은 업무의 분리와 향상된 관리를 제공한다.
Spring에서의 MVC 구조
Spring MVC의 주요 구성요소는 Model, View, Contriller지만, 유기적으로 동작하도록하기위해 다양한 구성요소가 함께한다.
- DispatcherServlet(Front Controller)
- 제일 앞단에서 HTTP Request를 처리하는 Controller
- HTTP Request가 왔을때 DispatcherServlet이라 불리는 서블릿이 HTTP Request를 처리할 Controller을 지정
- Handler(Controller)
- HTTP Request 처리해 Model 만들고 View를 지정
- HTTP Request의 메세지를 처리해 필요한 데이터를 뽑아 Model에 저장 HTTP Request에 따라서 HTTP가 보여줄 View Name를 지정한다.
- View Name 뿐만 아니라, 직접 View를 반환할 수 있다.
- ModelAndView
- Controller에 의해 반환된 Model과 View가 Wrapping된 객체
- Model:Map<String,Value> 형태의 데이터 저장소
- Model은 Map자료, HTTP Request 속의 데이터를 파싱해 Key-Value 쌍으로 만들어 저장, Model은 이후에 View를 그리기 위해 사용
- View, View Name: ViewResolver에서 그릴 View를 지정
- ModelAndView 내부에 View, View Name이 있는데, View가 지정되더라도 데이터가 세팅된 View가 지정되지 않는다.
- ViewResolver
- ModelAndView 객체를 처리해 View를 그린다. 여기서 모델에 저장된 데이터 사용해 View를 그려준다.
- View는 사용자에게 보여줄 완성된 View이며, 그려지는 View는 그대로 유저에게 반환
참고
- https://www.icia.co.kr/community/board/view/2/1/89?
- https://kotlinworld.com/326
- https://developer.mozilla.org/ko/docs/Glossary/MVC
MVC - 용어 사전 | MDN
MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고
developer.mozilla.org
'발걸음 > 일지' 카테고리의 다른 글
22번째 발자국_GitHub Actions (0) | 2022.08.31 |
---|---|
21번째 발자국_Scheduler (0) | 2022.08.29 |
16번째 발자국_쿠키와 세션 (0) | 2022.08.22 |
3주차_회고(feat.DI,IoC,Bean) (0) | 2022.08.21 |
15번째 발자국_MVC (0) | 2022.08.21 |