我是 Kotlin 的新手,最近开始研究 Ktor 服务器。要执行数据库操作,服务器需要与 MySql 服务器进行通信。我开始使用 JetBrains Exposed 库来编写数据库操作。
我编写了一个挂起函数来使用事务执行一段代码(使用 Exposed DSL 编写的数据库查询)。这是从一篇关于 ktor 入门指南的博文中得出的。
suspend fun <T> dbQuery(block: () -> T): T = withContext(Dispatchers.IO) {
transaction { block() }
}
每当我需要执行数据库查询时,我都会调用
dbQuery {
// my queries
}
因为 Exposed 使用线程本地事务管理器以及阻塞 JDBC 驱动程序,我想知道这样做是否安全?
关于如何使用协程实际处理 mysql 连接,没有很好的文档。
如果这是错误的并且最终会导致事务锁定,那么任何关于如何解决这个问题的指针都会有所帮助。
最佳答案
最新版本的 Exposed 支持协程。
请看documentation ,但由于 Exposed 中的协程支持仍处于实验模式,文档可能与代码略有不同。
关于kotlin - 将 Jetbrains 公开的库与 Ktor 一起使用并在协程内执行数据库事务是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57349885/