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();

如果您仔細觀察這兩種情況,我們會分別執行每個插入語句。這意味著對於程式中的每個插入語句,當呼叫execute()方法時,插入語句會在資料庫中執行並返回到程式。

對於少量插入來說,這還可以。但是,如果在插入大量記錄時發生這種情況,可能會出現通訊開銷,程式執行時間會更長。

使用批處理,您可以簡單地使用Statement介面的**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();

更新於:2019年7月30日

256 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告