2013-01-23 93 views
0

我有一個類使用JDBC與SQL Server和INSERT,UPDATE,DELETE和... .NOW是否有可能多個線程使用此類(不是共享對象,每個線程使用此類的新對象)同時訪問數據庫?可以通過JDBC同時多個線程訪問數據庫嗎?

+0

我會說這取決於數據庫,但是如果每個線程都請求自己的連接,那麼數據庫引擎很可能會拒絕/阻止這些請求,直到它能夠處理請求。它也將歸結爲數據庫引擎功能,認爲像支持事務 – MadProgrammer

回答

2

是的,這是可能的。

如果每個新對象共享同一個JDBC Connection對象,那麼它會降低數據庫訪問速度。

如果每個新對象都有自己的JDBC連接對象,那麼它不會減慢數據庫訪問速度。但是這會與您的數據庫創建多個連接,這會增加數據庫的負載。

1

JDBC僅是如何通過Java代碼與某些SQL Server進行通信的標準。多線程對JDBC沒有任何影響,如果你的代碼是線程安全的,當你需要的時候創建事務等等一切都會好的

1

JDBC不是一個類,它是一個標準。但是,可以有多個到數據庫的連接(通常是由容器管理的連接池)。每個線程將獲得一個連接並對數據庫執行操作。事務的使用確保了數據的一致性和完整性。

+0

你是什麼意思「由容器管理的連接池」? – Soheil

+1

如果您的應用程序在JEE應用程序服務器(如WebLogic,WebSphere,JBoss)中運行,那麼服務器將爲您提供一個數據庫連接池:這意味着服務器創建多個數據庫連接並將它們提供給需要執行的客戶端在數據庫上執行操作。當客戶端不再需要連接時,服務器可以將該連接傳遞給另一個客戶端。由於從頭開始建立連接是一項繁重的操作,因此效率更高。 – Bogdan

+0

好信息,thanx – Soheil

相關問題