我有一个使用Grails的run-script
运行的groovy脚本。它从大量静态数据填充数据库。由于this Grails/Hibernate session issue,我必须偶尔清除会话。如果我没有,那么应用程序内存不足。因此,当使用run-script
运行时,如何获得对会话或Web应用程序上下文的引用(GrailsWebApplicationContext
)?
答案 0 :(得分:5)
如果查看_RunScript.groovy
,您会看到应用程序上下文和GrailsApplication对象被注入到脚本的绑定中。
def shell = new GroovyShell(classLoader, new Binding(ctx: appCtx, grailsApplication: grailsApp))
有了这些内容后,访问当前会话很容易,在您的脚本中只需向会话工厂询问当前会话,您可以清除它:
def currentSession = ctx.sessionFactory.currentSession
currentSession.clear()