加速Grails节省复杂域类结构

时间:2016-10-14 08:10:53

标签: grails gorm

我有一个域类模型,由1:n关联的层次结构组成,例如:

  • 设置(有很多更正)
    • 修正(有很多行)
      • 行(有很多单元格)
        • 细胞

1:n关系是通过域类中的hasMany和belongsTo映射实现的。域实例是从上传的文件创建的,在某些情况下,一个校正可以包含20.000行,每行有20个单元格。

目前上传的文件已被解析,域对象已创建,但此时未保存,因为必须验证实例并显示错误消息。如果所有实例都没有错误,我保存顶级域类,如:

.setLayoutParams(new FrameLayout.LayoutParams(100,100)

这会在所有级别上保存集和所有关联的域实例。现在一切都由GORM管理。对于庞大的结构,保存过程往往变得非常慢,因为很可能hibernate会话变得更大。

我不想立即保存实例,因为验证错误应该汇总并显示给用户。所以我不能每100条记录刷新一次hibernate会话。

性能测试显示8906行需要5:01分钟,每行13个单元格= 115.778条记录。

环境:

  • Grails 3.1.8
  • Mysql DB 5.7

是否有建议加快保存程序?

0 个答案:

没有答案