2011-12-21 127 views
0

我正在開發一個簡單的數據庫項目。它有一些將在數據庫上執行的功能。我需要關於打開和關閉數據庫的建議。哪種方式更好?數據庫打開和關閉建議

程序啓動時,打開數據庫,並在程序結束時關閉。

當程序啓動時,當一個函數被調用時,打開數據庫,並在該函數結束時關閉數據庫。

我很困惑哪一個更好。在第一種情況下,數據庫將在計劃期間打開。在第二種情況下,數據庫的打開和關閉操作將在每個函數調用中執行,也針對每個函數執行。這會降低效率,並使代碼更長。

那麼哪一個更好?

+0

研究一下ORMs。我會推薦休眠http://www.hibernate.org/ – Marcelo 2011-12-21 20:54:27

回答

1

更好是主觀的。如果您只有少數客戶端連接到數據庫,那麼在短時間內連接打開是最好的選擇。但是,如果您有數百個客戶端需要連接,則可以支持的同時連接數量有限,因此長時間保持連接狀態不利。

打開和關閉到數據庫的連接有一個額外的開銷,但是您必須權衡該語言是否實際爲您彙集連接,因此只顯示連接已關閉,但如果需要將會被重用,如果在一段時間後還沒有真正關閉,還有很多其他可能的標準。

更好的是以最簡單的方式滿足您的需求。

+1

添加到上面的答案。我發現最好不要處理連接處理,除非我絕對必須。 Spring的JdbcTemplate可以爲您節省大量編碼和處理連接問題,並提供一種簡單的方法來交換處理連接的底層數據源的實現。 http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/jdbc.html#jdbc-JdbcTemplate – Travis 2011-12-21 21:02:31

+0

打開連接非常昂貴。分享一些開放的聯繫通常是要走的路。爲了給出一個相對成本的想法,一些簡單的Oracle查詢的測量值爲:建立連接500ms,準備語句75ms,執行查詢10ms。但正如其他答覆中所述,駕駛員可以透明地爲您提供幫助。 – Glenn 2011-12-21 21:25:58

0

創建一個獨立的函數,如getConnection(),它將創建並返回Connection對象。把你所有的代碼放在那裏創建連接。

,現在如果在任何功能,你需要一個數據庫連接呼叫getConnection()

public void myfunction() 
{ 
    javax.sql.Connection con = MyConnectionClass.getConnection(); 
    con.open(); 

    // do your business logic here 

    con.close(); 
} 
0

有成本很少留下連接打開長於必要的話,將有利於你的想法的時候打開程序啓動和關閉退出程序。

相關問題