2012-01-22 27 views
0

由於我在J2EE中開發Web應用程序,因此我必須非常小心數據庫調用。在JSP,Servlet中訪問(全局)變量以減少數據庫調用

我將圖像存儲在數據庫(BLOB)中。

爲了訪問這些圖像,我創建了一個servlet文件。

我將id傳遞給該文件,方法爲GET

爲了顯示圖像,我需要調用該servlet文件。

但是,作爲該servlet文件進行另一個數據庫調用,這是我最關心的。

例如:

如果在那個特定的JSP文件,我想要展示3行,我會1個來電,顯示的行和顯示這些圖像另外3個電話。

我有2個選項

  1. 創建一個全局變量和訪問JSP和servlet的中該變量。
  2. 不是創建全局變量,而是將數據庫對象傳遞給會話變量。

但是對於我來說都不好。 請推薦一些。

+0

我的問題是什麼是更好的方法來解決問題。 意味着技術。 – KuKu

回答

3

如果您擔心施加於數據庫的負載,應該避免將圖像存儲在其中。相反,將圖像存儲在磁盤上,並將其路徑存儲在數據庫中。

這樣,當您需要在單個頁面中顯示三個圖像時,執行單個查詢以獲取三個圖像的路徑,並生成包含3個路徑的HTML頁面。

如果沒有其他選擇,將圖像作爲blob存儲在數據庫中,並且如果已經對應用程序進行了負載測試,並且顯示從數據庫中獲取它們會導致嚴重的性能問題,那麼可以考慮使用某些應用程序緩存(如EHCache),從數據庫中刪除負載。您也可以從數據庫中一次獲得三張圖像並將它們存儲在會話中,但您必須找到清除會話的方法,否則應用程序的內存將會非常快地攀升。

+0

是的,我在數據庫中存儲圖像時也有點小心,並且我想要根,因爲它很容易進行備份。 這是我將圖像存儲在數據庫中的唯一原因。 而且我也認爲將圖像存儲到會話中只是一種更好的方式。 我是除了我們必須有一些更好的方法來解決這個問題。 – KuKu

0

而不是多次擊中數據庫。 只需編寫一個查詢,您可以獲取所需的所有行或您需要的圖像。 並顯示使用ArrayList的所有圖像行 這將是一個更容易的方法:)