[英]Effect of Singleton classes in Webservices
我正在實現一個Web應用程序,並提供了一些其他的API。
以下是我的Web應用程序的結構。
服務層
服務類包含不同的API。
它調用DAO ,它是一個單例類 (我想說這是一個Enum,並且只為Enum定義了實例),並且它沒有任何狀態。 我的意思是DAO圖層類中沒有實例變量。
DAO層
DAO類獲取數據庫連接 (通過Enum類提供數據庫連接,而我在實例化Enum時創建了連接),並在數據庫上執行相應的查詢。
所以應用程序架構就是這樣。
ServiceClass {
Dao.operation()
}
DaoEnum {
instance;
operation() {
DBConnectionEnum.instance.connection.preparedStmt.respective operation
}
}
DBConnectionEnum {
DBConnectionEnum() {
grabDBConnection()
}
}
我知道我必須使用connectionpool來獲取數據庫連接,但是我無法理解由Dao層(即單例)引起的影響。
您能否建議我這是一個正確的設計,還是會耗盡應用程序? 可以進行哪些改進以使應用程序更健壯,快速且高性能?
我正在與同事討論此問題,根據討論,我感到我的單例DAO層一定不會對我造成任何問題。
由於DAO層在DB和Service類之間充當中介者,因此DAO層不維護任何狀態。 因此,當同時調用2個類似的請求時,兩個請求將在2個不同的線程中得到服務,並且每個線程將維護自己的堆棧。 當兩個請求都調用DAO層時,這些請求將簡單地調用DAO層的方法,該方法將與相應線程的堆棧關聯。
因此,如果我在應用程序中創建Singleton DAO層以服務多個Web請求,它將不會耗盡吞吐量,因此必須為客戶端提供服務而不會出現任何問題。
希望我沒有任何意義。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.