kotlin - 将 Jetbrains 公开的库与 Ktor 一起使用并在协程内执行数据库事务是否安全?

标签 kotlin kotlin-coroutines ktor kotlin-exposed

我是 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/

相关文章:

java - java.library.path中的Ktor No netty_transport_native_epoll_x86_64

android - ANKO paddingTop - Val 无法重新分配

android - IllegalArgumentException : Navigation action/destination cannot be found from the current destination Destination [Navigation Error]

kotlin - 接收表单参数到 Ktor 服务器

spring - 如何将 kotlin 协程与响应式 Spring 数据一起使用

kotlin flow onEach 没有被触发

kotlin - Ktor session Cookie 身份验证

android - TabLayout不显示文本

android - 错误 : getSystemServise unresolved reference - kotlin android studio

android - kotlin如何使用coroutine scope调用web服务和处理错误