我實例有類似的代碼光滑的數據庫油滑的數據庫實例化和連接池邏輯
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)
預先感謝您的關懷和響應