2016-05-24 38 views
0

在我Luminus公司的應用程序中執行多個請求我有這樣的:Luminus公司 - 同一個數據庫連接

(defn page1 [id] 
    (layout/render "page1.html" 
    {:article (db/get-single-article {:id (Integer/parseInt id)})) 

我想執行相同的數據庫連接中有多個不同的請求到數據庫。我怎樣才能做到這一點?

+0

是否要使用相同的db連接或db事務? –

+0

@PiotrekBzdyl,連接。 –

回答

1

從你的問題,你是否要重複使用相同的數據庫連接來處理多個HTTP請求或一個HTTP請求調用使用JDBC API(所以所有的JDBC調用使用相同的數據庫連接)多種功能目前還不清楚。

如果是後一種情況下,你可以使用with-db-connection來包裝所有的函數調用JDBC API。如果所有SQL操作都應該是一個數據庫事務的一部分,您也可以使用with-db-transaction

對於前一種情況,我不知道你爲什麼會需要重用的多個HTTP請求相同的連接但由於HTTP是無狀態的定義,並導致多個問題它不是一個常見的成語。

你可以存儲在你的連接,以便ring HTTP session您就隨時可以得到與會話相關聯的請求,並使用JDBC邏輯拿來。

然而,這樣的解決方案如下缺點:

  • ,你必須確保連接被釋放到池中(或者,如果你不使用池關閉)不再需要的時候。你會如何檢測?如果客戶端發生故障,並且決定清理數據庫連接時從不完成某個工作流?
  • 多少個併發的會話'你需要處理?如果許多(如數百)保持每個會話的專用連接不會擴展(數據庫連接是雙方都很昂貴的資源:客戶端和服務器)