2012-04-19 111 views
0

從shell腳本調用java代碼時連接池數據庫連接是否有意義,還是使用單個連接更好?每次調用shell腳本後,jvm都不會退出,每次腳本被調用時都會重新創建db pool/factory/etc?Shell腳本中的Java DB連接池

例如,我有一個外部進程調用shell腳本,然後這個shell腳本調用一個執行一個或多個數據庫操作(查詢,插入,更新,刪除)的java類,具體取決於調用操作。這是一個獨立的批處理過程,它不使用像tomcat這樣的servlet容器。這個shell腳本被我的外部進程一遍又一遍地調用。

我的環境是一個bash外殼腳本調用的Java應用程序(main()方法),其利用彈簧JDBC和公地DBCP它1.4分貝處理和池。

在此先感謝!

回答

0

在你的情況下,連接池可能只具有有限的好處,因爲你說得很有道理,每當JVM關閉並重新啓動,你將不得不再次創建連接池。如果您想使用DataSource接口而不是直接創建連接,您仍然可以使用該池。如果你的處理是在一個線程中完成,確保連接池的大小隻有1

如果你在同一個進程使用多線程,則連接池可能更有意義,你可以受益於其功能。

+0

是的,這證實了我的要求。由於我的一些shell腳本操作有多個數據庫調用,我認爲池的開銷仍然可以使用。 – tkofford 2012-04-19 16:16:36

0

如果您有太多的數據庫調用,則初始化Connections會變得昂貴,您應該考慮使用連接池。

否則,批處理爲其(或者)可以序列正在運行的任務,一個連接就足夠了。 Spring-JDBC還提供了一個單獨的連接「池」工廠對象進行測試,這也適用於您(因此您不必處理鍋爐電鍍)。

0
  1. 打開數據庫連接在資源和性能(響應時間)方面都非常昂貴。

  2. 您不使用連接池,您獲得連接,使用它,然後關閉它。每當需要數據庫交互時,都會重複此操作。

  3. 連接池創建連接池可重複使用,從而節省時間和每次創建連接的資源,從這個可以節省你的。

  4. 無論您使用的是servlet容器還是獨立應用程序都無關緊要。這取決於您的應用程序(Web /獨立版)與數據庫交互的方式。

  5. 如果您的應用程序有很多並行操作涉及併發訪問數據庫,使用連接池將是非常有用的。

  6. 因此,連接池的選擇和相關性取決於應用程序與數據庫的交互方式,而不管它是Web應用程序還是獨立應用程序。