创建一个新对象或重新使用它

时间:2015-08-10 13:58:26

标签: java sqlite class oop jdbc

我必须从循环中解析来自xml文件的大量数据,并将值插入到sqlite数据库中。我在考虑而不是打电话:

PreparedStatement ps = conn.prepareStatement("insert into "+TABLE_NAME+" ("+NAME_COL+", "+AGE_COL+", "+ADDRESS_COL+", "+GENDER_COL+") values (?, ?, ?, ?)");

循环中的每次迭代,将值添加到列表中并将其传递给记录插入的方法。

我的问题是,我应该创建一个" new"每个记录插入后列出或删除列表中的所有元素并重用它。适合大量数据操作并产生良好性能

2 个答案:

答案 0 :(得分:0)

这是我的建议。

1)创建一个如下所示的类以及带有getter&的参数化构造函数。 setter方法。

class TABLE_NAME{
     datatype NAME_COL;
    datatype AGE_COL
    datatype ADDRESS_COL
    datatype GENDER_COL
    }

2)制作一次执行的简单语句。

    TABLE_NAME tablename;
String sql = "INSERT INTO" +TABLE_NAME+"values (?, ?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);

3)代码如下

    Loop through the XML{
//create a object tablename with values in the XML
tablename = new tablename(value1,values2,value3,value4);
ps.setString(1,tablename.getParameter1());
ps.setString(2,tablename.getParameter2());
ps.setString(3,tablename.getParameter3());
ps.setString(4,tablename.getParameter4());
ps.execute()
}
//end of loop

根据我的说法,您可能也不需要创建对象,并且仍然可以直接在setString函数中设置值。

答案 1 :(得分:0)

您应该使用一个INSERT INTO (...) VALUES (1,2,3),(1,2,4),(1,2,5),... - 命令,因为它是ACID-Pattern的一部分。

您可以像这样构建multi-insert-sql:

ExecutorService es = Executors.newFixedThreadPool(8);

编辑:

您应该更好地调整解析而不是插入。

{{1}}

可以指导您在使用具有8个线程的CPU的高性能环境中进行并行处理调整。