Java 如何将50K记录插入Oracle数据库?
我只需要将一些数据插入到Oracle数据库中的一个表中,而不是任何关系中 我需要在同一事务中插入超过50K条记录。最好的方法是什么?使用纯Java 如何将50K记录插入Oracle数据库?,java,hibernate,jpa,jdbc,Java,Hibernate,Jpa,Jdbc,我只需要将一些数据插入到Oracle数据库中的一个表中,而不是任何关系中 我需要在同一事务中插入超过50K条记录。最好的方法是什么?使用纯JDBC,JPA或Hibernate等 在同一事务中插入大约50000条记录的方式(批量更新或逐原始更新)更好 Hibernate:使用批处理更新,您可以插入数据 首先在会话中保存所有对象 session.save(对象) flush()和clear()您的会话 提交所有数据 tx.commit() 您可以使用JavaJDBC准备好的语句 // Create
JDBC
,JPA
或Hibernate
等
在同一事务中插入大约50000条记录的方式(批量更新或逐原始更新)更好 Hibernate:使用批处理更新,您可以插入数据
session.save(对象)代码>
flush()
和clear()
您的会话tx.commit()代码>
您可以使用JavaJDBC准备好的语句
// 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();
你可以进行一些批处理。50k记录很小,任何东西都可以做到。你到底有什么问题?哪种API更好?纯JDBC或JPA…因为您只想插入数据(不需要面向对象),所以我想最好使用JDBC。但从技术上讲,什么都可以。哪种API最好?纯JDBC或JPA等…JPA是一个很好的api,可以使用,假设在特性中您的数据库被更改。。。。JPA将帮助您…它也有各种优势…哪种API最好?纯JDBC或JPA等…这取决于需求。如果你的项目有hibernate,那就继续吧。
// 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();