什么是JDBC中的批处理?

将相关的SQL语句分组为一个批处理并立即执行/提交它们称为批处理。

当一个接一个地执行一组语句时,执行同时从数据库切换到程序。

使用批处理,我们可以减少通信开销并提高Java应用程序的性能。

例如,如果我们有一个名为Emp的表,并具有以下描述:

+----------+--------------+------+-----+---------+-------+

| Field    | Type         | Null | Key | Default | Extra |

+----------+--------------+------+-----+---------+-------+

| Name     | varchar(255) | YES  |     | NULL    |       |

| DOB      | String       | YES  |     | NULL    |       |

| Location | varchar(255) | YES  |     | NULL    |       |

+----------+--------------+------+-----+---------+-------+

而且,如果您要插入数据,我们通常会使用以下语句来进行处理:

Stmt.execute("INSERT INTO Emp VALUES ('Amit', '30-9-1989', 'Hyderabad')");

Stmt.execute("INSERT INTO Emp VALUES ('Amit', '1-9-1989', 'Vishakhapatnam')");

并将PreparedStatement用作:

String query = "INSERT INTO Emp(Name, String, Location) VALUES (?, ?, ?)";

PreparedStatement pstmt = con.prepareStatement(query);

pstmt.setString(1, "Amit");

pstmt.setDate(2, "30-9-1989"));

pstmt.setString(3, "Hyderabad");

pstmt.execute();

pstmt.setString(1, "Sumith");

pstmt.setDate(2, "1-9-1989"); //Friday, Sept 1, 1989 12:00:00 AM

pstmt.setString(3, "Vishakhapatnam");

pstmt.execute();

如果您仔细观察这两种情况,我们将分别执行每个insert语句。这意味着对于程序中的每个插入语句,在execute()调用方法时,插入语句都会在数据库中执行并返回到程序。

可以减少插入次数。但是,如果在插入大量记录时发生这种情况,则可能会产生通信开销,并且程序将花费更多时间来执行。

使用批处理,您可以简单地使用语句接口的addBatch()方法将语句添加到批处理中,并稍后使用executeBatch()方法执行它们,如下所示:

Stmt.addBatch("INSERT INTO Emp VALUES ('Amit', '30-9-1989', 'Hyderabad')");

Stmt.addBatch("INSERT INTO Emp VALUES ('Amit', '1-9-1989', 'Vishakhapatnam')");

Stmt.executeBatch();

pstmt.setString(1, "Amit");

pstmt.setDate(2, "30-9-1989"));

pstmt.setString(3, "Hyderabad");

pstmt.addBatch();

pstmt.setString(1, "Sumith");

pstmt.setDate(2, "1-9-1989"); //Friday, Sept 1, 1989 12:00:00 AM

pstmt.setString(3, "Vishakhapatnam");

pstmt.addBatch();

pstmt.executeBatch();

以上是 什么是JDBC中的批处理? 的全部内容, 来源链接: utcz.com/z/335255.html

回到顶部