我正在尝试通过创建实体对象并persist()
使用 Hibernate 作为 JPA 提供程序进行调用来填充数据库。
一开始,数据库是空的,然后我在一个循环中创建实体实例(100,000 个实例),并将每个实例持久化。
此操作需要大约 10 分钟才能将所有实体注入数据库。我正在使用免费的轮胎亚马逊云服务器机器,600 MB RAM 内存。
循环如下所示:
@Transactional
void populateDataBase()
{
for(int i=0; i<100000; i++)
{
MyEntityPK entityInstancePK = new MyEntityPK(idfield1, idField2, idField3);
MyEntity entityInstance = new MyEntity();
entityInstance.setId(entityInstancePK);
entityInstance.setField1(integerValue);
entityInstance.setField2(integerValue);
entityInstance.persist();
}
}
如果我评论该persist()
行,循环将在几秒钟内完成。当我取消注释该entityInstance.persist();
行时,循环大约需要 10 分钟才能完成。
这个操作是不是很费时间和内存?或者它不应该很快?在这种情况下调用 merge() 而不是 persist() 更好吗?也许更快?