2011-02-26 118 views
0

我正在使用STS + Grails 1.3.7并为数千个域类实例进行批量插入。Grails/Hibernate批量插入

这很慢,因为Hibernate只是将所有SQL语句批量化为一个JDBC调用,而不是将这些语句合并为一个。

我怎样才能让它们成为一个大的声明?

+0

你可以发布你插入的代码吗? – 2011-02-27 15:02:16

回答

0

你可以看到这行Hibernate的文档:当我改变发电机的类型

Hibernate disables insert batching at the JDBC level transparently if you use an identity identifier generator. 

,它的工作。

0

在域类上使用withTransaction()方法可以使批处理脚本的插入快得多。您可以在一个集合中构建所有域对象,然后将它们插入到一个块中。

例如:

Player.withTransaction{ 
    for (p in players) { 
     p.save() 
    } 
} 
+0

谢谢杰森。我试过这个,但它不起作用。 – user571470 2011-02-28 20:48:12