TIL

TIL 241105

muerha 2024. 11. 5. 22:02

 

 

Spring 기초 6주차

 


 

 

 

Layered Architecture

애플리케이션을 세 가지 주요 계층으로 나누어 구조화 하는 방법

코드의 재사용성, 유지보수성, 확장성을 높여준다.

 

 

구조

 

Presentation Layer

사용자의 요청을 받고 응답하는 역할 수행

화면을 응답하거나 데이터를 응답하는 API를 정의

 

Business Layer(Service Layer)

비지니스 로직 수행

요청을 해석하여 Repository Layer에 전달

일반적으로 하나의 비지니스 로직은 하나의 트랜잭션으로 동작한다.

 

Data Access Layer(Repository Layer)

데이터베이스와 연동되어 실제 데이터를 관리

 

 

 

 

Layered Architecture 적용

 

Controller

클라이언트의 요청을 받는 역할

요청에 대한 처리를 Service Layer에 전달

Service에서 처리 완료된 결과를 클라이언트에 응답

@Controller, @RestController 사용

 

 

Service

사용자의 요청 사항을 처리

DB와 상호작용이 필요한 경우에 Repository Layer에게 요청

@Service 사용

 

 

Repository

DB와 상호작용

@Repository 사용

 

 

DTO(Data Transfer Object)

계층간 데이터 전달을 위해 사용

요청 데이터를 처리하는 객체는 일반적으로 RequestDto로 명명

응답 데이터를 처리하는 객체는 일반적으로 ResponseDto로 명명

 

 

 

 

Database

 

 

DBMS(Database Management System)

Database를 관리하고 운영하는 시스템

SQL이라는 언어로 DBMS에 데이터 관리를 요청하면 DBMS가 요청을 처리한다.

 

DBMS 주요 기능

데이터 정의, 데이터 관리, 데이터 보안, 트랜잭션 관리 - AICD 속성 보장, 백업 및 복구, 동시성 제어

 

ACID 속성

  • Atomicity: 트랜잭션의 모든 작업이 성공적으로 완료되거나, 실패 시 모든 작업이 롤백
  • Consistency: 트랜잭션이 데이터베이스를 일관된 상태로 유지
  • Isolation: 동시에 실행되는 트랜잭션 간의 영향을 최소화
  • Durability: 트랜잭션이 완료된 후 데이터의 변경 사항은 영구적으로 저장

 

DBMS 종류

 

관계형 DMBS(RDBMS) - 데이터를 테이블 형태로 구조화하여 저장하고 관리하는 시스템

비관계형 DBMS(NoSQL)

다중 모델 DBMS

 

 

 

트랜잭션

데이터베이스에서 하나의 논리적인 작업 단위

트랜잭션으로 묶여있는 작업들은 모두 성공적으로 완료되거나 하나라도 실패하면 전체가 취소된다.

 

 

 

SQL(Structured Query Language)

RDBMS에서 데이터를 정의, 조작, 제어, 조회하기 위해 사용되는 표준 프로그래밍 언어

 

 

SQL 종류

 

DDL(Data Definition Language)

데이터베이스 구조 정의

  • CREATE 새로운 데이터베이스 및 테이블 생성
  • ALTER 기존 데이터베이스 및 테이블 구조 수정
  • DROP 데이터베이스 및 테이블 삭제

 

 

DML(Data Manipulation Language)

데이터베이스의 데이터를 조작하는 데 사용

  • INSERT 데이터를 테이블에 삽입
  • UPDATE 테이블의 기존 데이터를 수정
  • DELETE 테이블의 데이터를 삭제

 

 

DQL(Data Query Language)

데이터베이스에서 데이터를 검색하는 데 사용

  • SELECT 데이터를 조회

 

 

DCL(Data Control Language)

데이터베이스의 권한을 관리하는 데 사용

  • GRANT 사용자에게 권한을 부여
  • REVOKE 사용자의 권한을 회수

 

 

TCL(Transaction Control Language)

여러 DML 작업을 하나의 논리적 단위로 묶어 트랜잭션으로 처리하는 데 사용

  • COMMIT 트랜잭션이 성공한 것을 데이터베이스에 알리고 모든 변경 사항을 영구적으로 저장
  • ROLLBACK 트랜잭션 중 발생한 모든 변경 사항을 취소하고 데이터베이스를 트랜잭션 시작 시점의 상태로 되돌림

 

 

 

JDBC

Java 언어를 사용하여 DB와 상호 작용하기 위한 자바 표준 인터페이스

 

 

 

Prepared Statement

SQL문을 Complie 단계에서 ? 를 사용하여 preCompile 하여 미리 준비해놓고 Query문을 파라미터 바인딩 후 실행하고 결과를 반환받는다.

  • query를 미리 준비한다.
  • Statement에 비해 성능면에서 뛰어나다.
  • 웹 보안을 유지할 수 있다.

 

 

Persistence Framework

  • JDBC API를 사용
  • Prepared Statement 사용
  • JDBC 처럼 복잡함이나 번거로움 없이 간단한 작업만으로 Database와 연동된다.
    • 자원 관리(Connection)를 자동으로 해준다.
  • SQL Mapper
    • JDBC Template

 

 

 

 

'TIL' 카테고리의 다른 글

TIL 241107  (0) 2024.11.07
TIL 241106  (0) 2024.11.06
TIL 241104  (0) 2024.11.04
TIL 241102  (0) 2024.11.02
TIL 241101  (0) 2024.11.01