Java 一个ORM数据库中有多少记录可以快速更改?

Java 一个ORM数据库中有多少记录可以快速更改?,java,sqlite,orm,ormlite,Java,Sqlite,Orm,Ormlite,情况:我需要使用ORMLite DAO更改数据库中的许多记录(例如10000条记录)。所有记录仅在一个表、一列和具有指定id的更改记录中更改 问题:使用ORMLite DAO一次更新数据库中的多少条记录 现在,我使用以下代码更新记录: imagesDao.update(imageOrmRecord) 但更新记录的周期非常慢(100条记录\秒) 我认为真正的更新记录,使用SQL代码,但这是不可取的…SQL是一种面向集合的语言。ORM的全部目的是将其抽象为对象。 所以,当你想更新一堆对象时,你必须

情况:我需要使用ORMLite DAO更改数据库中的许多记录(例如10000条记录)。所有记录仅在一个表、一列和具有指定id的更改记录中更改

问题:使用ORMLite DAO一次更新数据库中的多少条记录


现在,我使用以下代码更新记录:

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");