Java 一个ORM数据库中有多少记录可以快速更改?
情况:我需要使用ORMLite DAO更改数据库中的许多记录(例如10000条记录)。所有记录仅在一个表、一列和具有指定id的更改记录中更改 问题:使用ORMLite DAO一次更新数据库中的多少条记录Java 一个ORM数据库中有多少记录可以快速更改?,java,sqlite,orm,ormlite,Java,Sqlite,Orm,Ormlite,情况:我需要使用ORMLite DAO更改数据库中的许多记录(例如10000条记录)。所有记录仅在一个表、一列和具有指定id的更改记录中更改 问题:使用ORMLite DAO一次更新数据库中的多少条记录 现在,我使用以下代码更新记录: imagesDao.update(imageOrmRecord) 但更新记录的周期非常慢(100条记录\秒) 我认为真正的更新记录,使用SQL代码,但这是不可取的…SQL是一种面向集合的语言。ORM的全部目的是将其抽象为对象。 所以,当你想更新一堆对象时,你必须
现在,我使用以下代码更新记录:
imagesDao.update(imageOrmRecord)代码>
但更新记录的周期非常慢(100条记录\秒)
我认为真正的更新记录,使用SQL代码,但这是不可取的…SQL是一种面向集合的语言。ORM的全部目的是将其抽象为对象。
所以,当你想更新一堆对象时,你必须遍历这些对象。
(您遇到了;请阅读。)
ORMLite为您提供了一个后门:
但是,如果您唯一的问题是性能,那么这可能是由自动提交模式造成的,它会给每个语句增加事务开销。使用会解决这个问题
问题:如何使用ORMLite DAO一次更新数据库中的许多记录
这取决于你正在做的更新。您当然可以使用将对对象进行批量更新的
UpdateBuilder<Account, String> updateBuilder = accountDao.updateBuilder();
// update the password to be "none"
updateBuilder.updateColumnValue("password", "none");
// only update the rows where password is null
updateBuilder.where().isNull(Account.PASSWORD_FIELD_NAME);
updateBuilder.update();
您应该能够以这种方式使用原始SQL完成大部分更新
但是如果您需要对每个实体进行更新,那么您需要对每个实体执行dao.update(…)
。然后,我要做的是在事务中这样做,以加快更新速度。请参阅。您的问题是什么?
UpdateBuilder<Account, String> updateBuilder = accountDao.updateBuilder();
// update the password to be "none"
updateBuilder.updateColumnValue("password", "none");
// only update the rows where password is null
updateBuilder.where().isNull(Account.PASSWORD_FIELD_NAME);
updateBuilder.update();
// update hasDog boolean to true if dogC > 0
updateBuilder.updateColumnExpression("hasDog", "dogC > 0");