为什么hibernate persist()很慢?就我的情况而言,它只是慢了一点?
我试图通过创建实体对象并使用Hibernate作为JPA提供程序调用为什么hibernate persist()很慢?就我的情况而言,它只是慢了一点?,hibernate,jpa,persist,Hibernate,Jpa,Persist,我试图通过创建实体对象并使用Hibernate作为JPA提供程序调用persist()来填充数据库 首先,数据库是空的,然后我在一个循环中创建实体实例(100000个实例),并将每个实例持久化 此操作需要10分钟才能将所有实体注入数据库。 我正在使用免费的亚马逊云服务器机器,600 MB的RAM内存 循环如下所示: @Transactional void populateDataBase() { for(int i=0; i<100000; i++) { M
persist()
来填充数据库
首先,数据库是空的,然后我在一个循环中创建实体实例(100000个实例),并将每个实例持久化
此操作需要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();
}
}
@Transactional
void populatedDatabase()
{
对于(int i=0;i是的,您需要查看
你想做些更像
for ( int i=0; i<100000; i++ ) {
Customer customer = new Customer(.....);
session.save(customer);
if ( i % 20 == 0 ) { //20, same as the JDBC batch size
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
}
对于(int i=0;iHi hvgotcodes),我不认为调用clear可以帮助我。但是调用flush()可能会有帮助。谢谢你,我会检查你的链接。但是我想,@Transactional函数会自动管理它(它会自动调用flush())。这并不清楚,这是刷新会话,以便您一次保存多个会话。