私は Kotlin を初めて使用し、最近 Ktor サーバーで作業を開始しました。データベース操作サーバーを実行するには、MySql サーバーと通信する必要があります。JetBrains Exposed ライブラリを使用してデータベース操作を記述し始めました。
トランザクションを使用してコードのブロック (Exposed DSL を使用して作成されたデータベース クエリ) を実行するための中断された関数を作成しました。これは、ktor の入門ガイドに関するブログ投稿に基づいています。
suspend fun <T> dbQuery(block: () -> T): T = withContext(Dispatchers.IO) {
transaction { block() }
}
私が呼び出すdbクエリを実行する必要があるときはいつでも
dbQuery {
// my queries
}
Exposed はスレッドローカル トランザクション マネージャーとブロッキング JDBC ドライバーを使用するため、これが安全かどうか疑問に思っています。
コルーチンを使用して mysql 接続を実際に処理する方法に関する適切なドキュメントはありません。
これが間違っていて、最終的にトランザクションのロックアウトにつながる場合は、これを解決する方法についての指針が役立ちます。