私は、同様のコードで滑らかなデータベースをインスタンス化していますが、クエリは、ユーザIDを取り込み、データベーステーブルからユーザー名を返す関数から構成されています。スリックデータベースインスタンス化と接続プール・ロジック
val p1 : Publisher[String] = db stream (queryName("foo").result)
val p2 : Publisher[String] = db stream (queryName("bar").result)
:
def queryName(userId : String) =
for {
row <- TableQuery[Tables.MyTable] if row.userid === userId
} yield row.username
そして、その後、個別のPublisher
値を生成するクエリを実行しています
最後に、私の質問は:db.stream
への複数の呼び出しは、接続プールで同じ接続を利用していますか?
つまり、データベースをインスタンス化したら、単一の接続でロックするのと同じことですか?
含意は、プール内のすべての接続の真の利用が照会する前にDatabase
値を作成する機能が必要になるということでしょう:
//Is this necessary?
val db =() => Database forConfig "configPath"
val p1 = db() stream (queryName("foo").result)
はによるご検討および応答