2013-05-30 90 views
3

我正在用Java編寫一個多線程服務器,它將訪問數據庫並返回客戶端請求的數據庫信息。多線程服務器數據庫訪問

我的主要服務器類被寫爲一個靜態類,它基本上在客戶端連接到它時產生一個線程。

我的問題是在哪裏把所有的數據庫訪問方法?它們應該位於靜態主服務器類中嗎,還是應該放在服務器線程代碼中?

所有答案/解釋讚賞!

回答

1

它應該保留在螺紋部分。因爲如果您在靜態服務器類中使用訪問方法,則爲數據庫交互創建的會話對象將變爲線程不安全。數據庫可能存在不一致的情況。

建議將數據庫連接部分保存在線程代碼中。使用線程池將是個好主意。您可以調整數據庫密集型應用程序的性能。以下是關於此問題的oracle的兩個重要文檔。

  1. http://docs.oracle.com/cd/E19159-01/819-3681/abehq/index.html
  2. http://docs.oracle.com/cd/E19159-01/819-3681/abehs/index.html
+0

謝謝!這就是我最終做的,它似乎迄今爲止工作。 – eric121492

+0

您可以使靜態方法同步。這將使他們線程安全。 – gtsouk

1

打開和關閉數據庫連接是不是最好的主意。嘗試使用線程池重用線程(及其連接)。

還有一些數據庫系統,你不能有多個(寫)連接。 Sqlite就是其中之一。在這種情況下,你可以使用靜態同步方法來訪問數據庫。