數據庫連接是得到像下面來自用戶的每個請求調用一個新的getConnection()?
public Connection getDBConection(){
Context context = new InitialContext();
DataSource dataSource = (javax.sql.DataSource) context.lookup("java:myDataSource");
Connection conn = dataSource.getConnection();
}
對於用戶A,是每個數據庫請求應該叫getDBConnection()
一次;但不需要控制所有的請求使用相同的連接?
也就是說,如果userA有三個數據庫請求,那麼userA應該調用getDBConnection()
三次,並且在每個請求中使用後調用Connection.closed()
?
如果用戶A撥打getDBConnection()
三次(即撥打dataSource.getConnection()
三次),是否建立了三個連接?或者它是未知的,並由weblogic控制?
我感到非常混亂,對於一個數據庫請求應該有一個新的連接是真的嗎?或者只需爲每個數據庫請求調用DataSource.getConnection()
,並且創建的新連接數由Web服務器控制,無需考慮實際創建的連接數。
然後如果userA有三個不同的數據庫請求,他應該調用DataSource.getConnection()三次,然後調用Connection.close()三次,對吧? 這對於使用相同的連接來處理三個數據庫請求並不好(對於三次不同的數據庫請求,只調用一次DataSource.getConnection(),對嗎?) 我問過這個問題,因爲有時我看到創建連接時間是沉重且需要緩存該連接,但實際上,這已經由JDBC drvier完成了,無需由應用程序開發人員進行處理? – user1169587 2013-03-01 16:59:09
如果你有三個不同的數據庫請求,並且它們應該一個接一個地執行(即不是由三個不同的線程中的三個不同的用戶),那麼通過一切手段,我將使用相同的'Connection'執行它們。我不會依賴以特定方式配置您的數據源。 – 2013-03-01 17:45:53