카테고리 없음

[Spring_4기 본캠프] Spring 플러스 - 데이터베이스의 트랜잭션과 드라이버 | Day 61

austindynasty 2025. 1. 20. 20:23

1. 트랜잭션

1) 원자성 (All or Nothing) 

- 트랜잭션이 데이터베이스에 모두 반영되거나 아니면 전혀 반영되지 않을 것

- 트랜잭션은 사람이 설계한 논리적인 작업 단위로서 일처리는 작업단위 별로 이루어져야 사람이 다루는 데에 무리가 없음

2) 일관성 (Keep Data Correct)

- 트랜잭션의 작업 처리 결과는 항상 일관적이어야 함

- 트랜잭션이 진행되는 동안에 데이터베이스가 변경 되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는 것이 아니라, 처음에 트랜잭션을 진행하기 위해 참조한 데이터베이스로 진행됨 → 일관성 있는 데이터를 볼 수 있음

3) 독립성 (Independent)

- 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없음

 

4) 트랜잭션 관리와 보안 (DCL)

- BEGIN : START TRANSACTION과 동일하며 새로운 트랜잭션을 생성 및 시작하는 연산

- COMMIT

> 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때 하나의 트랜잭션이 끝났다라는 것을 알려주기 위해 사용하는 연산

> COMMIT 연산을 사용하면 수행했던 트랜잭션이 로그에 저장되며, 후에 ROLLBACK 연산을 수행했던 트랜잭션 단위로 하는 것을 도와줌

- ROLLBACK

> 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우, 트랜잭션을 처음부터 다시 시작하거나 트랜잭션의 부분적으로만 연산된 결과를 다시 취소시킴 

 → 트랜잭션이 성공적으로 끝날 때 COMMIT을 발생시키게 되고 중간에 실패되면 ROLLBACK 명령어를 통해 수정했던 내용을 되돌리도록 명령어를        날림 

 

2. 데이터베이스 데이터를 외부에서 다루기 (JDBC)

1) 데이터베이스 드라이버 : 애플리케이션과 DB간의 통신을 중개하는 역할로 드라이버가 애플리케이션의 요청을 데이터베이스가 이해할 수 있는 언어로 변환해줌

- 다양한 데이터베이스 시스템마다 호환되는 드라이버가 있으며 각 DB 제품에 맞는 특정 드라이버가 필요함

- 드라이버의 동작 방식

① 연결 초기화 

- 요청 수신 : 애플리케이션은 데이터베이스 작업을 시작하기 위해 드라이버에 연결 요청

- 연결 설정 : 드라이버의 데이터베이스 서버에 로그인하고 필요한 설정을 수행하여 연결을 완료함. 이 과정을 네트워크 정보, 인증 자격 증명 등을 사용해 이뤄짐

② SQL 전송 및 실행

- SQL 명령 변환 : 애플리케이션에서 발송된 SQL 명령을 받은 드라이버는 해당 명령을 데이터베이스가 이해할 수 있는 형태로 변환

- 명령 처리 : 변환된 명령은 데이터베이스 서버로 전송되어 실행됨. 데이터베이스는 쿼리를 처리하고 요구된 데이터를 검색하거나 데이터에 변화를 줌

③ 결과 처리 

- 결과 수신 : 데이터베이스에서 작업의 결과를 보내면 드라이버는 이 결과를 받아 애플리케이션에서 해석할 수 있는 형태로 변환

- 결과 전달 : 최종적으로 드라이버는 이 결과를 애플리케이션에 전달함. 애플리케이션은 이 정보를 사용자에게 표시하거나 다음 작업을 진행

④ 연결 종료

- 연결 해제 : 작업이 완료되면 드라이버는 데이터베이스 서버와의 연결을 종료하며 자원을 정리하고 다음 세션을 위해 시스템을 초기화 함 

 

2) JDBC Driver Manager : 애플리케이션이 실행되고 있는 런타임 시점에 연결을 생성해 쿼리를 요청할 수 있는 상태를 만들어주고, 상태를 생성하여 쿼리를 요청하게 해주고, 결과셋을 생성해 쿼리 결과를 받아올 수 있게 해줌

 

3) Spring Boot의 JDBC 라이브러리 

- spring-boot-starter-jdbc : 데이터베이스 작업을 수행하는 데 필요한 주요 의존성과 자동 구성 기능을 제공, 데이터베이스와의 연결을 쉽고 빠르게 구성할 수 있도록 도와주는 브릿지 역할을 함

- 주요 포함 내용

> JDBC API 지원 : JDBC API를 통해 SQL 데이터베이스에 접근하고 작업을 수행할 수 있음

> DataSource 구성 : 데이터 소스 연결을 위한 기본적인 설정을 자동으로 구성

> JdbcTemplate : JdbcTemplate은 Spring의 핵심 클래스 중 하나로, JDBC 작업의 많은 번거로움을 줄여줌. SQL 쿼리 실행, 결과 세트 처리, 예외 처리 등을 단순화

- 주요 장점 내용

> 간소화된 데이터베이스 연결 : DataSource 설정과 JdbcTemplate 사용을 통해 복잡한 JDBC 코드를 간소화할 수 있음

> 자동 구성 : Spring Boot의 자동 구성 기능은 개발자가 데이터베이스 연결에 필요한 대부분의 구성을 자동으로 처리할 수 있도록 함

> 효율적인 예외 처리 : Spring의 DataAccessException을 통해 JDBC에서 발생하는 예외를 Spring의 일관된 예외 체계로 변환해줌