我有一个应用程序需要在5个表中执行批量插入: ParentTable,ChildATable,ChildBTable,ParentHistoryTable,Child_A_B_HistoryTable;在ChildATable上,ChildBTable和Child_A_B_HistoryTable每个最多可包含50k条记录。
这是Grails 2.4.4应用程序,在我们的开发环境中,我们使用grails配置文件来定义数据源(我们使用的是DB2)。
为了提高我们的表现,子记录的插入执行如下:
def session = sessionFactory.openSession()
def tx = session.beingTransaction()
然后我们遍历子节点并使用会话来持久保存值并刷新每20条记录:
session.save(obj)
if(count mod 20 == 0){
session.flush()
session.clear()
}
完成循环后,提交事务并关闭会话。
tx.commit()
and session.close()
现在,在为生产部署做好准备时,我们需要将数据源定义为WL配置的一部分,并使用jndi来使用它。
对于我们正常使用GORM的数据库的其他交互,在dev和prod环境中一切都是相同的,但是对于会话的特定用法,在执行对session.save(obj)行的第一次调用之后,应用程序闲置。
我们非常感谢您对此方案的任何指导或帮助。
此致,Josue Ortiz