我有要求只將一些數據插入Oracle數據庫到只有一個表,而不是任何關係。如何將50K記錄插入Oracle數據庫?
我需要在同一個事務中插入多於50K
的記錄。做這個的最好方式是什麼?使用純粹的JDBC
,JPA
或Hibernate
等...
哪種方式(批更新或原始更新原始)更好地插入大約50000記錄在同一事務?
我有要求只將一些數據插入Oracle數據庫到只有一個表,而不是任何關係。如何將50K記錄插入Oracle數據庫?
我需要在同一個事務中插入多於50K
的記錄。做這個的最好方式是什麼?使用純粹的JDBC
,JPA
或Hibernate
等...
哪種方式(批更新或原始更新原始)更好地插入大約50000記錄在同一事務?
休眠:使用批量更新,您可以將您的數據,
首先保存所有對象在會話
session.save(Object);
flush()
和clear()
會話
if ((batchCounter % 25000) == 0) { session.flush(); session.clear(); }
提交的所有數據
tx.commit();
哪個API最好?純JDBC或JPA等... – user3496599
JPA是一個很好的API,假設你的數據庫得到改變.... JPA將幫助你...它也有各種優點... –
您可以使用Java JDBC的準備語句。
// Create SQL statement
String SQL = "INSERT INTO Employee (id, first, last, age) " +
"VALUES(?, ?, ?, ?)";
// Create PreparedStatement object
PreparedStatemen pstmt = conn.prepareStatement(SQL);
// Set auto-commit to false
conn.setAutoCommit(false);
// Set the variables
pstmt.setInt(1, 400);
pstmt.setString(2, "x");
pstmt.setString(3, "y");
pstmt.setInt(4, 33);
// Add it to the batch
pstmt.addBatch();
// Set the variables
pstmt.setInt(1, 401);
pstmt.setString(2, "p");
pstmt.setString(3, "q");
pstmt.setInt(4, 31);
// Add it to the batch
pstmt.addBatch();
// Create an int[] to hold returned values
int[] count = stmt.executeBatch();
// Explicitly commit statements to apply changes
conn.commit();
哪個API最好?純JDBC或JPA等...... – user3496599
根據需要決定。如果你的項目已經休眠,那就去吧。 – Thilak
你可以去一些批處理。 –
50k記錄很小,任何事情都可以做到。你到底有什麼問題? – Mat
哪個API更好?純JDBC或JPA ... – user3496599