【发布时间】:2017-04-06 14:08:00
【问题描述】:
我正在使用类似于
的代码实例化一个光滑的数据库import slick.jdbc.JdbcBackend.Database
val db : Database = Database forConfig "configPath"
查询是由一个函数构造的,该函数接受一个用户 ID 并从数据库表中返回一个用户名:
def queryName(userId : String) =
for {
row <- TableQuery[Tables.MyTable] if row.userid === userId
} yield row.username
然后运行查询以产生不同的Publisher 值:
val p1 : Publisher[String] = db stream (queryName("foo").result)
val p2 : Publisher[String] = db stream (queryName("bar").result)
最后,我的问题是:多次调用db.stream 是否使用连接池中的同一个连接?
换句话说,一旦我实例化了数据库,这与锁定单个连接是一样的吗?
这意味着要真正利用池中的所有连接,需要一个函数在查询之前创建Database 值:
//Is this necessary?
val db = () => Database forConfig "configPath"
val p1 = db() stream (queryName("foo").result)
提前感谢您的考虑和回复
【问题讨论】: