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 |