關於如何節約資料庫連線的討論?
在MVC模式中,DAO類封裝了所有的資料操作,資料庫連線的獲取和釋放都在這裡執行,我一般都是在每個方法裡獲取和釋放connect;但是涉及到複雜操作,例如批處理的時候,一下子要獲取很多connect;連線池中的connect很容易就被佔用光了;
還是舉例來說明吧:
論壇帖子的資料庫操作類
用上面的操作執行,那麼一次刪除操作就建立和關閉了vector.size()個資料庫連結; 這樣妥當嗎?
是否可以在DAO中增加一個批次刪除的方法 removeList(String[] ids)
從而只使用一個connect就完成批次刪除的操作
還有一個例子;
顯示帖子; 帖子裡要顯示 帖子內容,帖子附件/圖片,N個回覆,N個回覆的圖片/附件;
正常操作:
想一下,如果沒頁顯示10個回覆,那麼顯示一條帖子內容要建立13個資料庫連線; 如果併發訪問稍微多一點,你的連線池肯定罷工了!
如果要最佳化,我們可不可以在ResImgDAO裡增加一個返回N條回覆所有圖片的方法呢,當然返回的可能就是HashMap等;
但是這樣做是不是把業務的內容放到model裡了呢?
當然還可以嘗試其他方法,例如把connect傳遞給DAO的方法,DAO的方法判斷connect是否為空,為空的時候才建立,但是這種做法太危險了;
小弟在這裡開個頭,希望各位大哥有什麼好的思路或者方法給大家共享一下,大家一起討論!
還是舉例來說明吧:
論壇帖子的資料庫操作類
TopicDAO{ public void create(TopicDTO topic){ getConnection(....) .... finally{ conn.close();} } public void remove(String id){ getConnection(....) .... finally{ conn.close();} } } 上面remove方法是刪除一個帖子,如果要批次刪除N個帖子的話, TopicDAO dao=new TopicDAO(); for(int a=0;a<vector.size();a++){ ... dao.remove(id); } <p class="indent"> |
用上面的操作執行,那麼一次刪除操作就建立和關閉了vector.size()個資料庫連結; 這樣妥當嗎?
是否可以在DAO中增加一個批次刪除的方法 removeList(String[] ids)
從而只使用一個connect就完成批次刪除的操作
還有一個例子;
顯示帖子; 帖子裡要顯示 帖子內容,帖子附件/圖片,N個回覆,N個回覆的圖片/附件;
正常操作:
TopicDAO tdao=new TopicDAO(); TopicDTO topic=tdao.findByKey(topicId);----1次連線 TopicImgDAO idao=new TopicImgDAO(); Vector topicImgV=idao.findAllImg(topicId); -----1次連線 TopicResDAO rdao=new TopicResDAO(); Vector resList=rdao.getTopicRes(int start,int end,String topicId)----1次連線 ResImgDAO ridao=new ResImgDAO(); for(int a=0;a<resList.size();a++){ String resId=(String)resList.get(a); Vector resImgV=ridao.findAllImg(resId0; } -----------------------------resList.size()次連線 |
想一下,如果沒頁顯示10個回覆,那麼顯示一條帖子內容要建立13個資料庫連線; 如果併發訪問稍微多一點,你的連線池肯定罷工了!
如果要最佳化,我們可不可以在ResImgDAO裡增加一個返回N條回覆所有圖片的方法呢,當然返回的可能就是HashMap等;
但是這樣做是不是把業務的內容放到model裡了呢?
當然還可以嘗試其他方法,例如把connect傳遞給DAO的方法,DAO的方法判斷connect是否為空,為空的時候才建立,但是這種做法太危險了;
小弟在這裡開個頭,希望各位大哥有什麼好的思路或者方法給大家共享一下,大家一起討論!
相關文章
- 關於資料庫 Block 儲存細節問題的討論資料庫BloC
- 關於大資料和資料庫的討論大資料資料庫
- 關於資料庫作業系統的討論資料庫作業系統
- 關於資料庫連線池資料庫
- 關於java連線SQL資料庫JavaSQL資料庫
- 關於JPetstore連線資料庫問題資料庫
- 請教關於資料庫連線的問題資料庫
- 請問,關於資料庫連線的問題。資料庫
- 關於分類的線性模型的討論模型
- 關於資料庫連線的一些小問題資料庫
- 關於tomcat資料庫連線池的問題Tomcat資料庫
- 關於BSS資料化轉型的幾點討論
- [討論]資料庫設計,ER 中的實體關係如何確認?資料庫
- 1.3.3.1. 關於連線資料庫的SQL*Plus 工具描述資料庫SQL
- 關於用JB7連線資料庫的問題。資料庫
- 如何連線MySQL資料庫MySql資料庫
- 請關掉你的資料庫連線!並且請使用資料庫連線池資料庫
- 備忘錄:關於.net程式連線Oracle資料庫Oracle資料庫
- 關於oracle SCN 的討論Oracle
- 求助!關於多執行緒連線資料庫的問題執行緒資料庫
- 請教關於資料庫連線池的設定問題?資料庫
- [技術討論]關於低耦合開發的討論
- 基於MySQL資料庫討論虛擬機器資料恢復MySql資料庫虛擬機資料恢復
- 資料庫的連線資料庫
- 資料庫連線未關閉的問題資料庫
- 關於資料庫連線問題的一般解決方法資料庫
- 如何設定Struts 連線資料庫的公共類,作個公共的類,來連線資料庫,如何寫???資料庫
- 關於aio的設定的討論AI
- 如何在weka中連線資料庫資料庫
- 如何動態連線Access資料庫資料庫
- 如何設定多資料庫連線?!資料庫
- 不能連線資料庫如何解決資料庫
- DBeaver如何連線一個資料庫資料庫
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- 討論:大家來討論一些連線涉及到的引數
- PHP資料庫長連線mysql_pconnect的細節PHP資料庫MySql
- 關於jive資料庫連結的錯誤?資料庫
- 關於部落格評論外掛的討論