技术问答集锦(八)MyBatis系列

519 阅读1分钟

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 服务器启动时会 建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会 返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。