【发布时间】:2012-03-21 19:46:06
【问题描述】:
我有一个 grails 应用程序。我想用 grails 外部的东西,特别是 perl 将数据加载到底层数据库中。我知道我必须在外部数据加载后更新休眠序列,否则在 grails 中的下一个创建对象时,休眠会引发异常;但还有什么我需要更新的吗?例如,我是否必须清除休眠缓存?这似乎是一个非常普遍的问题,但在 grails 文档中没有讨论它。谢谢。
【问题讨论】:
我有一个 grails 应用程序。我想用 grails 外部的东西,特别是 perl 将数据加载到底层数据库中。我知道我必须在外部数据加载后更新休眠序列,否则在 grails 中的下一个创建对象时,休眠会引发异常;但还有什么我需要更新的吗?例如,我是否必须清除休眠缓存?这似乎是一个非常普遍的问题,但在 grails 文档中没有讨论它。谢谢。
【问题讨论】:
Hibernate 有这方面的 API。您可以通过 sessionFactory.getQueryCache() 获取查询缓存并使用
清除它 sessionFactory.queryCache.clear()
您可以使用其完整的类名访问域类的缓存,例如
def cache = sessionFactory.getSecondLevelCacheRegion('com.foo.bar.Book')
并通过
清除它 sessionFactory.getSecondLevelCacheRegion('com.foo.bar.Book').clear()
你也可以在 sessionFactory 上为整个类调用 evict()
sessionFactory.evict(com.foo.bar.Book)
或对于单个实例
sessionFactory.evict(com.foo.bar.Book, 42)
【讨论】: