팀 과제로 여러 용어에 대한 정의를 알아보고, 토론했다.
용어는 익숙치 않았지만 토론하면서 느낌알아가는게 좋았다.
여전히 스프링쓰는 것은 어렵다.
이전과는 다르게 잘 안 익숙해진다아앍
주저리주저리 많이 적었다. 다시한번 읽는 날 더 익숙해지길
단축키
Shift Alt R - 프로젝트 내에서 사용된 단어 찾기
오늘 안 것
- JPA(Java Persistence API) 및 ORM(Object-Relational Mapping)이란
자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음이다
실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다
JPA는, SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제할 수 있도록 해주는 번역기이다.
- ORM(Object-Relational Mapping)
ORM은 Object Relational Mapping 즉, 객체-관계 매핑의 줄임말이다.
객체-관계 매핑을 풀어서 설명하자면 우리가 OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블 자동으로 매핑(연결)하는 것을 의미한다.
RDB는 관계형 데이터베이스 엑셀시트처럼 빈칸에 내용을 쌓아가는 데이터베이스 방식이다.
그러나 클래스와 테이블은 서로가 기존부터 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하는데,
이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다.
따라서 ORM을 이용하면 따로 SQL문을 짤 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다.
- SQL (Structured Query Language(구조적 질의 언어))
관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어
- Controller, Service, Repository
- Controller
클라이언트의 요청을 받음
요청에 대한 처리는 서비스에게 전담
클라이언트에게 응답
- Service
사용자의 요구사항 처리
DB 정보가 필요할 때는 Repository에게 전담
- Repository
DB 관리(연결, 해제, 자원 관리)
DB CRUD 작업 처리
객체의 상태를 관리하는 저장소이다. 즉, Entity(도메인 객체라고 생각하면 된다) 그 자체를 저장하고 불러오는 역할을 한다.
- MVC패턴
MVC 패턴은 이름에서도 알 수 있듯이 모델(Model), 뷰(View), 컨트롤러(Controller) 세 개의 컴포넌트로 이루어졌다.
- 모델(Model)
어플리케이션의 정보, 데이터를 나타낸다.데이터베이스, 처음의 정의하는 상수, 초기화 값 등을 뜻한다.비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달한다.
- 뷰(View)
사용자에게 보여지는 부분, 즉 유저 인터페이스(UI)를 의미한다.MVC패턴은 여러개의 뷰가 존재할 수 있다.모델에게 전달받은 데이터를 별도로 저장하지 않아야 한다.사용자가 화면에 표시된 내용을 변경하면 모델에게 전달하여 모델을 변경해야 한다.
- 컨트롤러(Controller)
모델과 뷰 사이를 이어주는 브릿지 역할모델이나 뷰는 서로의 존재를 모르고 있다.컨트롤러는 이를 중재하기 위해 모델과 뷰에 대해 알고 있어야 한다.
- MVC패턴 사용이유
'유지보수의 편리성'
MVC 패턴은 Spring 프레임워크와 JSP(Java Servlet Page)를 사용한 웹 어플리케이션 개발에서 가장 즐겨 사용되는 개발 방식이다.
출처: https://junhyunny.github.io/information/design-pattern/mvc-pattern/
MVC(Model, View, Controller) Pattern
junhyunny.github.io
- RDBMS(Relational Database Management System)
관계형 데이터베이스를 생성하고 수정, 삭제 관리할 수 있는 소프트웨어이다.
- NoSQL(Not Only SQL)
관계형 데이터베이스와 반대되는 방식을 사용하여 데이터간의 관계를 정의하지 않는다.
- RDBMS 특징
Data를 Column과 Row형태로 저장한다.
데이터의 분류, 정렬, 탐색 속도가 비교적 빠르다.
SQL(Structured Query Language, 구조화 질의어)라는 정교한 검색 query를 통해 데이터를 다룬다.
Transaction (작업의 완전성을 보장)
반드시 Schema 규격에 맞춰야 한다. (유연한 데이터 저장 X)
부하의 분산이 어렵다.
MySQL, SQLite 등 ...
- NoSQL의 특징
데이터간의 관계를 정의하지 않는다. (Table 간의 join 도 불가능)
RDBMS의 복잡도와 용량 한계를 극복하기 위한 목적으로 등장한 만큼 RDBMS에 비해 훨씬 더 대용량의 데이터를 저장할 수 있다.
분산형 구조 : 데이터를 여러 대의 서버에 분산해 저장
고정되지 않은 Table Schema (Schema가 없어 다루기 쉬움)
Key에 대한 put/get 만 지원한다.
Schema가 없다보니 Data에 대한 규격화된 결과 값을 얻기 힘들다.
MongoDB, Cassand, Redis 등 ...
출처 : https://velog.io/@wlsgh46/RDBMS-NOSQl-%EC%B0%A8%EC%9D%B4
RDBMS NOSQl 차이
데이터베이스(Data Base)란 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임이다.데이터베이스 관리 시스템(DBMS, DataBaseManagementSystem)이란 다수의 사용자들이 데이터베이스
velog.io
- DAO(Data Access Object)
DB의 data에 접근하기 위한 객체로 직접 DB에 접근하여 데이터를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.
DataBase 접근을 하기 위한 로직과 비지니스 로직을 분리하기 위해 사용한다.
DAO의 경우는 DB와 연결할 Connection 까지 설정되어 있는 경우가 많다.
- DTO(Data Transfer Object)
DTO는 계층간(Controller, View, Business Layer) 데이터 교환을 위한 자바 빈즈(Java Beans)를 의미한다.
DTO는 로직을 가지지 않는 데이터 객체이고 getter/setter메소드만 가진 클래스를 의미한다.
DTO(Data Transfer Object)는 데이터 전송(이동) 객체라는 의미를 가지고 있다.
DTO는 주로 비동기 처리를 할 때 사용한다.
계층간 데이터 교환을 위한 객체(Java Beans)이다.
DB의 데이터를 Service나 Controller 등으로 보낼 때 사용하는 객체를 말한다.
출처 : https://velog.io/@ha0kim/DAO-DTO-VO-%EC%B0%A8%EC%9D%B4
DAO, DTO, VO,Entity 차이
완전 기본
velog.io
- 동기, 비동기
- 동기(synchronous: 동시에 일어나는)
동기는 말 그대로 동시에 일어난다는 뜻입니다. 요청과 그 결과가 동시에 일어난다는 약속인데,
바로 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다.
요청한 결과가 한자리에서 동시에 일어남
A노드와 B노드 사이의 작업 처리 단위(transaction)을 동시에 맞추겠다.
- 비동기(Asynchronous: 동시에 일어나지 않는)
비동기는 동시에 일어나지 않는다는 의미다.
요청한 결과는 동시에 일어나지 않을거라는 약속이다.
요청한 그 자리에서 결과가 주어지지 않음
노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.
출처: https://koras02.tistory.com/87 [Koras02코딩웹]
출처 : https://koras02.tistory.com/87
동기와 비동기 개념과 차이
데이터를 받는 방식인 동기와 비동기. 이 둘의 개념에 대해 알아보고 둘의 차이점을 알아보도록 하겠습니다. 1. 동기(synchronous: 동시에 일어나는) - 동기는 말 그대로 동시에 일어난다는 뜻입니다
koras02.tistory.com
- REST API에서 PUT, PATCH
PUT
자원의 전체 교체, 자원 교체 시 모든 필드 필요
(만약 전체가 아닌 일부만 전달할 경우, 전달한 필드 외 모두 null or 초기값 처리되니 주의)
PATCH
자원의 부분 교체, 자원 교체시 일부 필드 필요.
- 내일할 일
- 스프링 강의 듣기
- WIL 작성하기(한 주간 뭐 배웠나 한번 다시봐보자)
'TIL' 카테고리의 다른 글
항해99_TIL220523 (http 상태코드, https, SSL) (0) | 2022.05.24 |
---|---|
항해99_WIL220522 (객체지향 프로그래밍, JVM) (0) | 2022.05.22 |
항해99_TIL220520 (주특기 Spring 시작) (0) | 2022.05.21 |
항해99_TIL220519 (Collection 프레임워크) (0) | 2022.05.19 |
220518 TIL (0) | 2022.05.18 |