当前位置: 代码迷 >> Java Web开发 >> 请教JAVA怎么优化DAO层与数据库交互的部分
  详细解决方案

请教JAVA怎么优化DAO层与数据库交互的部分

热度:20   发布时间:2016-04-16 22:26:05.0
请问JAVA如何优化DAO层与数据库交互的部分
for (int i = 0; i < xqList.size(); i++) {
                Test test = xqList.get(i);
                khDao.saveOrUpdate(test);
            }
在DAO层有一段代码是这么写的,这样会造成程序特别的慢,要刷很多sql,请问这个该怎么优化好?
这段代码得主要问题是 在循环里与数据库交互,xqlist数据大约几十条,这样的话就与数据库交互几十次,所以非常影响性能,我希望各位给些意见,怎么能减少与数据库的交互
------解决方案--------------------
拼接好,最后一步 update
------解决方案--------------------
1.优化Hibernate,在配置文件中设置hibernate.jdbc.batch_size参数,来指定每次提交SQL的数量。
 配置hibernate.jdbc.batch_size参数的原因就是尽量少读数据库,hibernate.jdbc.batch_size参数值越大,读数据库的次数越少,速度越快。

2、通过JDBC API来做批量插入,绕过Hibernate API。
// 方式2:批量提交
conn.setAutoCommit(false);
for(int i = 0; i++; i<10000) {
    stmt.setString(1, "testName");
    stmt.setString(2, "testAddress");
    stmt.addBatch();
    if (i % 100 == 0) {
        stmt.executeBatch();
        conn.commit();
    }
}
stmt.executeBatch();
conn.commit();

------解决方案--------------------
拼接好sql语句后,用事务一次性提交吧
------解决方案--------------------
拼接SQL语句,一次提交。
  相关解决方案