1 ) 오늘 학습한 내용
- DB(H2) 사용 방식
- 트랜잭션
- DB Driver 역할 및 종류
- DB Driver 동작 방식
- JDBC
- MyBatis
- ORM
- DB(H2) 사용방식
- Server Mode : 현업에서 사용하는 모드, 컴퓨터에 DB 엔진을 설치하고 엔진을 구동하는 방식
- In - memory Mode : 애플리케이션에 DB 엔진이 내장되어 에플리케이션과 함께 실행되고 종료되는 방식
- Embedded Mode : 인메모리와 같은 방식이지만 데이터를 로컬에 저장하기 때문에 휘발에서 자유로운 방식
- 트랜잭션
- DB의 상태를 변화시키기 위해서 수행하는 작업의 단위
- 데이터 처리 중에 문제 발생시 그 전에 했던 변경을 아무일도 없는 것 처럼 모두 되돌림.
- 3가지 특징
- 원자성 (All or Nothing) : 모두 반영되던가 전혀 반영되지 않아야한다.
- 일관성 (Keeps Data Correct) : 트랜잭션이 진행되는 동안에 DB가 변경되어도 업데이트된 DB로 트랜잭션이 진행되는 것이 아니라 처음에 트랜잭션을 진행하기위해 참조된 DB로 진행된다.
- 독립성 (Independent) : 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다.
- 관리와 보안 (DCL)
- BEGIN : START TRANSACTION과 동일하며 새로운 트랜잭션을 생성 및 시작하는 연산이다.
- COMMIT : 하나의 트랜잭션이 성공적으로 끝나고, DB가 일관성있는 상태 일 때, 하나의 트랜잭션이 끝났다는 것을 알려주기 위해 사용되는 연산.
- ROLLBACK : 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우, 처음부터 다시 시작하거나 부분적으로만 연산된 결과를 다시 취소하시킨다.
- DB Driver 역할 및 종류
- 역할 : 애플리케이션과 DB 간의 통신을 중개하는 역할
- 종류 : 다양한 DB 시스템마다 호환되는 드라이버가 있다. 각각 제품에 맞는 특정 드라이버가 필요.
- DB Driver 동작 방식
- 연결 초기화
- 요청수신 : 애플리케이션은 DB 작업을 시작하기 위해 드라이버에 연결 요청
- 연결 설정: 드라이버는 DB 서버에 로그인하고 필요한 설정을 수행하여 연결을 완료.
- SQL 전송 및 실행
- SQL 명령 변환 : 애플리케이션에서 발송된 SQL 명령을 DB가 이해할 수 있는 형태로 변환.
- 명령 처리 : DB 서버로 전송되어 실행, DB는 쿼리를 처리하고, 요구된 데이터를 검색하거나 변화를 준다.
- 결과 처리
- 결과 수신 : DB에서 작업의 결과를 보내면, 드라이버는 이 결과를 받아 애플리케이션에서 해석할 수 있는 형태로 변환.
- 결과 전달 : 최종적으로 결과를 애플리케이션에 전달.
- 연결 종료
- 연결 해제 : 작업이 완료되면, 드라이버는 DB 서버와의 연결을 종료.
- 연결 초기화
- JDBC
- JDBC Template (RowMapper)
- RowMapper.mapRow : RowMapper를 상속받아 mapRow() 메서드를 구현하면 JDBCTemplate에서 row 응답을 mapRow() 메서드에 rs 파라미터로 넘겨주어 객체 매핑하기 쉽도록 도와준다.
- JDBC Template (RowMapper)
- MyBatis
- jdbc로 처리하는 코드의 설정 부분을 줄이고 실제 sql문에 연결함으로서 빠른 개발이 가능하게 한다.
- 다른 방식에 비해 객체자체보다 쿼리에 집중할 수 있다.
- 한계점
- 결국 SQL을 직접 작성해야한다.
- 테이블마다 비슷한 CRUD 반복, DB타입 및 테이블에 종속적이다.
- ORM
- QueryMapper의 DB의존성 및 중복 쿼리 문제로 ORM 탄생.
- 문제점
- 상속 문제
- 관계 문제
- 탐색 문제
- 밀도 문제
- 식별성 문제
- 해결점
- 영속성 컨텍스트(1차 캐시)를 활용한 쓰기지연
- 영속성이락? 데이터를 생성한 프로그램이 종료되어도 사라지지 않는 데이터 특성을 말한다.
- 영속성을 갖지 않으면 데이터는 메모리에만 존재하게 되고 프로그램이 종료되면 해당 데이터는 모두 사라진다.
- 쓰기지연 효과
- 여러개의 객체를 생성할 경우 모아서 한번에 쿼리를 전송한다.
- 여러가지 동작이 많이 발생하더라고 쿼리는 트랜잭션당 최적화 되어 최소 쿼리만 날라가게 된다.
- 영속성 컨텍스트(1차 캐시)를 활용한 쓰기지연
'TIL > Spring' 카테고리의 다른 글
TIL 2024-12-17 ( 5주차 - 데이터베이스 다루기 ) (0) | 2024.12.17 |
---|---|
TIL 2024-12-12 ( 4주차 - 데이터베이스 다루기 ) (1) | 2024.12.12 |
TIL 2024-11-27 (Spring 심화 - 활용) (1) | 2024.11.27 |
TIL 2024-11-26 (Spring 심화) (0) | 2024.11.26 |
TIL 2024-11-18 (Cookie/Session) (0) | 2024.11.18 |