002 R2dbc Mysql

02. R2dbc MySQL #

R2dbc MysqlConnection #

  • Connection을 구현한 MysqlConnection
  • ConnectionMetadata를 구현한 MysqlConnectionMetadata
  • Statement를 구현한 MysqlStatement img.png

MysqlConnectionFactory #

  • Mono 형태로 포함
  • MysqlConnectionConfiguration을 인자로 받아서 MysqlConnectionFactory를 생성
  • MysqlConnectionFactory로 MysqlConnection 생성
  • MysqlConnection으로 MysqlStatement를 생성
  • MysqlConnection으로 transaction을 start, rollback, commit img_1.png img_2.png

MysqlConnectionConfiguration #

  • MYSQL 연결의 설정을 포함하는 객체
  • Builder 패턴
  • host, port, database, username 등 기본 설정 제공
  • serverZoneId 설정 img_3.png

MysqlConnection 생성 #

img_4.png

Sql 준비 #

img_5.png

Sql 실행 #

  • ConnectionFactory의 create()를 통해서 connection 접근
  • connection의 createStatement를 통해서 sql 준비
  • result의 map으로 row에 접근하고 Person으로 변환
  • thenMany() chaining : 순차적으로 실행
    • selectPeople 결과를 아래로 전달
  • result의 map으로 row에 접근하고 Person으로 변환 img_6.png

MysqlConnection의 한계 #

  • SQL 쿼리를 명시적으로 전달
  • 반환된 결과를 수동으로 파싱
    • 별도의 mapper를 만들어야하고 확장성이 떨어짐

Transaction 실행 #

  • connection의 beginTransaction과 commitTransaction으로 transaction 시작과 commit 수행
  • 롤백 수행 : conn.rollbackTransaction() img_7.png

  1. 강의 : Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지_