2010-08-04 39 views

回答

4

「無限循環」?對不起,這聽起來像個壞主意。

當人們說在循環中多次調用準備好的語句是一個好主意的時候,人們是正確的。但隱含的是一個有確定開始和結束的循環。

我懷疑你的「無限循環」。這聽起來更像是一個聽衆,你想保持活力來響應某些數據庫事件。

答案「沒關係」是正確的,但是對於你正在做的更詳細的描述可能很有趣。評論後

UPDATE:

我有聽過事件一個Atom RSS服務器。當請求進入時,我會讓RSS偵聽器將它交給一個服務,該服務將從連接池中獲取連接,啓動事務,在方法作用域中創建預準備語句,插入消息,關閉預準備語句在方法範圍內的finally塊中,提交事務並將連接返回到池。

JDBC驅動程序或數據庫將緩存PreparedStatements,因此效率不高。沒有必要掛在一個。

沒有無限循環。沒有線程問題。

+0

+1,我錯過了那個重要的點 – Bozho 2010-08-04 11:13:20

+0

我的程序正在收集來自rss頻道的數據並將項目放入數據庫。我認爲不可能爲此任務建立完善的模型。 但是有趣的是:如何基於數據庫事件來製作均衡模型?有沒有這方面的圖書館?如果它是重要的,我正在編寫scala語言的程序。 – 2010-08-04 11:18:03

+0

非常有趣。我想在我的項目中,我會用Scala演員來做到這一點。 – 2010-08-04 11:56:28

4

這就是準備好的陳述 - 準備一次並多次使用它們。

6

是的,這很好,而且是使用PreparedStatements的要點之一(語句會被編譯一次,然後可以運行多次)。

只要您不從多個(不同)線程調用相同的語句,就可以按照您的預期工作。從多個線程調用相同的語句可能會導致問題,因爲這些對象在這些條件下不能保證是線程安全的。