Java 如何将50K记录插入Oracle数据库?

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

我只需要将一些数据插入到Oracle数据库中的一个表中,而不是任何关系中

我需要在同一事务中插入超过50K条记录。最好的方法是什么?使用纯
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();