不确定ThreadLocalTransactionProvider功能

时间:2018-09-23 08:24:26

标签: sql kotlin jooq

假设我在某个中心位置创建了一个DSLContext,并且创建了一个将其作为参数的存储库。我使用ThreadLocalTransactionProvider。现在在代码中的某个时候,我打开一个事务:

// somewhere central, not necessarily on the same thread
val db = DSL.using(...)
val repo = Repo(db)

db.transaction(fun() {
     // this runs in the transaction
     db.select(....).fetch()
     // does this too?
     val result = repo.getStuff()      
})

我假设每次db请求连接时,jOOQ都会查询ThreadLocalTransactionProvider,如果存在当前事务,该线程会在ThreadLocal变量中进行查找,并确保返回正确的连接。我希望这是它的工作方式,但是没有太多的文档,而且我不想冒错误地进行事务管理的风险。

0 个答案:

没有答案