大家都说批量更新可以减少JDBC调用的次数。请问“JDBC调用”是什么意思,为什么与一次性调用所有负载相比,增加这种调用的次数更加昂贵。
开发人员在口语中使用“JDBC调用”一词时,他们指的是通过网络将信息发送到数据库。JDBC API的批处理功能允许您在单个网络调用中提交多个离散操作,而不是针对每个SQL语句进行调用。根据JDBC规范:
批量更新功能允许Statement对象将一组异构的SQL语句作为单个单元或批次一起提交到底层数据源。
对于PreparedStatement,仅需创建单个语句的额外好处存在。这使您能够使用多个绑定参数集执行相同的查询,而无需将语句本身多次添加到批处理中。最终结果是更少的网络流量及其相关的开销。
规范中的一个示例:
PreparedStatement stmt = con.prepareStatement(
"INSERT INTO employees VALUES (?, ?)");
stmt.setInt(1, 2000);
stmt.setString(2, "Kelly Kaufmann");
stmt.addBatch();
stmt.setInt(1, 3000);
stmt.setString(2, "Bill Barnes");
stmt.addBatch();
// submit the batch for execution
int[] updateCounts = stmt.executeBatch();
在调用JDBC更新时,Java程序连接到数据库服务器并执行查询。这意味着对于每个更新,Java程序都会联系数据库服务器并执行查询。现在,如果我们使用JDBC批量更新,则Java应用程序只需要联系一次数据库服务器并在数据库服务器上执行所有查询,然后返回给Java应用程序。
简而言之,它将减少Java应用程序和数据库服务器之间的往返。通常两者都在不同的服务器上,因此它将减少大量网络资源。因此,它实现了更好的性能。