2012-09-05 44 views
0

我必須創建一個連接到MySQL DB的Web應用程序。 我想知道如何處理我的DAO中的連接對象。如何處理我的DAO中的連接對象(Java EE)

該應用程序可能會被不同用戶每天使用幾次。

我有點困擾DAO模式,並使用靜態單例。因爲它是一個網絡應用程序,我會永久連接到數據庫。我覺得保持這種連接並在所有用戶會話之間共享是不太好的。

另一方面,我不太確定每次需要訪問Db時獲取連接並關閉它都是一個更好的主意。

一種比另一種好嗎?我忘記了什麼可能會更好?

回答

1

通常情況下,您將在容器中設置數據源,並且對於每個操作,只需從數據源獲取連接即可。使用正確的事務管理器設置,在同一事務下檢索的連接應該相同。連接池通常在數據源中處理。

+0

我有一個數據源,但它由一個公司框架管理,我沒有它的來源,所以我不知道他們如何管理池(如果他們這樣做)。我曾嘗試反編譯相關類,但我沒有找到任何池化機制。 – Antoine

+0

好吧,如果他們已經實現了一個DataSource,在大多數情況下他們已經正確地處理了。而且,你說這是一個Web應用程序,我敢打賭它部署在一個webapp容器中。通常情況下,數據源實際上是在您不需要擔心的容器中進行管理的。我會建議試試我建議的常規方法,並寫一點POC以確保它正常工作。 –

+0

甚至事實證明,你發現數據源的實現不處理連接池,它仍然很好。首先它不影響功能,其次,我認爲你可以找到一些數據源庫來裝飾你現有的數據源並提供連接池功能(我認爲bonecp提供了這樣的功能) –