使用Java在数据库(在我的案例中是Oracle数据库)中插入或更新数据时,最好使用以下哪种:
ResultSet.insertRow()
、ResultSet.updateRow()
或Statement.executeUpdate(....)
大多数时候,我使用rs.insertRow()
和rs.updateRow()
,这样就避免了编写查询的需要,但这在性能方面合理吗?
我从不使用ResultSet
做任何事情,只是遍历它,将它映射到对象或数据结构中,然后关闭它。如果我想插入,我使用PreparedStatement
。我的ResultSets
从未停留足够长的时间来修改。我更喜欢保持持久性操作的时间较短,这样我就可以尽快关闭连接。我认为这种方法的扩展性更好,因为这样多个用户更容易共享池连接。
我认为部分原因是结果集有多大。如果要循环处理300万条记录,我会使用rs.updateRow(),而不是执行300万次查询。