技術問答集錦(八)MyBatis系列

猿碼道發表於2018-01-27

1 關於PreparedStatement和Statement具體區別

  1. PreparedStatement是 預先編譯的語句,而Statement則 不是預先編譯的,在DBMS中處理管理中 Statement是要進行語法、語義校驗的,而PreparedStatement則只在第一次執行時需要。

  2. PrepareStatement中執行的SQL語句中是可以帶引數的,而Statement則不可以。比如:

    PreparedStatement pstmt  =  con.prepareStatement("UPDATE EMPLOYEES  SET SALARY = ? WHERE ID = ?");
    pstmt.setBigDecimal(1, 153833.00);
    pstmt.setInt(2, 110592);
    pstmt.executeUpdate();
    複製程式碼
  3. 當處理批量SQL語句時,這個時候就可以體現PrepareStatement的優勢,由於採用Cache機制,則預先編譯的語句,就會放在Cache中,下次執行相同SQL語句時,則可以直接從Cache中取出來

2 說出資料連線池的工作機制是什麼?

J2EE 伺服器啟動時會 建立一定數量的池連線,並一直維持不少於此數目的池連線。客戶端程式需要連線時,池驅動程式會 返回一個未使用的池連線並將其表記為忙。如果當前沒有空閒連線,池驅動程式就新建一定數量的連線,新建連線的數量有配置引數決定。當使用的池連線呼叫完成後,池驅動程式將此連線表記為空閒,其他呼叫就可以使用這個連線。

相關文章