R2DBC란
R2DBC(Relative Relation Ddatabase Connectivity)는 리액티브 프로그래밍을 가능하게 하는 데이터베이스 인터페이스이다.
즉, JDBC에서 지원하지 않는 비동기(asynchronous), 논블로킹(non-blocking) 프로그래밍 모델을 지원하고, Spring WebFlux의 성능을 최대치로 끌어올릴 수 있다.
🍃 Spring Data R2DBC
R2DBC는 Spring Data R2DBC를 통해 Spring Boot 프로젝트에 쉽게 통합될 수 있고, 데이터베이스 연동에 뛰어난 추상화를 제공한다.
ReactiveCrudRepository란
ReactiveCrudRepository는 리액티브 스트림을 지원하는 CRUD 메서드들을 포함하는 인터페이스이다.
내부를 확인해보면 기존의 다른 Spring Data의 리파지토리 인터페이스인 CrudRepository와 크게 다르지 않다.
다만, 전통적인 CrudRepository와 다른 점은 리턴 타입이 Flux 또는 Mono라는 것과 파라미터에 Publisher가 추가되었다는 점이다.
ReactiveCrudRepository는 WebFlux의 Flux와 Mono를 지원하며 리액티브 데이터 엑세스 기술을 사용할 때 상속받아 사용한다.
DatabaseClient란
DatabaseClient는 R2DBC 코어 패키지의 핵심 클래스이다.
리소스 생성과 해제를 알아서 처리해주기 때문에 커넥션 종료를 잊는 등의 에러를 방지할 수 있다.
코어 R2DBC 워크플로우의 구문 생성, 실생과 같은 기본 작업을 수행하므로, 애플리케이션 코드에선 SQL을 제공하고 결과를 추출하기만 하면 된다.
DatabaseClient는 다음과 같은 작업을 수행한다.
- SQL 쿼리 실행
- 구문을 업데이트하고 저장 프로시저 호출
- Result 인스턴스 반복 처리
- R2DBC exception을 잡아, org.springframework.dao 패키지에 있는 더 많은 정보를 제공하는 범용 exception 계층 구조로 변환
DatabseClient는 선언적으로 설정을 만들 수 있는 함수형 fluent API를 가지고 있으며, 리액티브 타입을 사용한다.
참조
https://github.com/jojoldu/review/blob/master/SpringCamp_2017_1%EB%B6%80/README.md
'공부 기록 > Spring' 카테고리의 다른 글
[Spring] 로그 설정 및 출력 방법 - Logback (2) | 2023.05.03 |
---|---|
[Spring WebFlux] CollectMap에 대하여 (0) | 2023.04.10 |
[Spring] @Transactional 어노테이션 (0) | 2023.04.03 |
[Spring] @Query 어노테이션 (0) | 2023.04.03 |
Spring WebFlux란 뭘까 (0) | 2023.03.30 |