Closed Kuleshovegor closed 6 months ago
В предложенном мною решении выделяю класс QueryExecutor, который отвечает за выполнение запросов к YDB, основной список его методов это:
Остальные методы служат в основном для изменения каких-либо параметров запросов и транзакций. Этот объект создается для одного Connection и он передается в Statement для выполнения запроса. QueryExecutor работает с session, который берет из состояния YdbConnectionState, также он из него берет и TxControl. Для этих целей QueryExecutor хранит и поддерживает YdbConnectionState. YdbConnectionState, кроме выдачи сессии и txControl также выдает новое состояние в зависимости от того какое состояние сейчас и какое действие произошло, методы выдачи нового состояния:
Connection и имеет 3 реализации OutsideTransactionState, InsideTransactionState и CloseState.
Состояния в QueryExecutor сменяются согласно схеме ниже:
Implement io.r2dbc.spi.Connection interface and transaction flow.