使用WL数据源保存域时使用sessionFactory.openSession空闲

时间:2018-04-05 22:43:11

标签: grails weblogic12c sessionfactory

我有一个应用程序需要在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

0 个答案:

没有答案