【发布时间】:2011-07-19 11:45:28
【问题描述】:
我很好奇 Grails 框架提供的对数据库/GORM 对象缓存的支持。
- 默认启用哪些数据库缓存?
- 框架提供哪些数据库缓存但默认禁用?
- 您通常在 Grails 项目中启用/禁用哪种数据库缓存?为什么?
【问题讨论】:
标签: hibernate grails grails-orm
我很好奇 Grails 框架提供的对数据库/GORM 对象缓存的支持。
【问题讨论】:
标签: hibernate grails grails-orm
Grails 为 GORM 使用 Hibernate,因此数据库缓存功能实际上是由 Hibernate 提供的。
Hibernate 一级缓存已启用(仅持续大约用户请求的时间)。它不能被禁用。
Hibernate 二级缓存也已启用,但可以通过配置关闭。此缓存将保存数据很长时间(可按对象类型配置),除非某些东西使数据无效(更新)
对于重读应用程序,应该启用二级缓存,您将节省大量访问数据库的次数,并且对您的应用程序是 100% 透明的(几乎没有成本)。
问候,
文森特
【讨论】:
3) 我们禁用了磁盘缓存溢出。必须为此从ehcache-core-1.7.1.jar/ehcache-failsafe.xml 显式创建ehcache.xml。
磁盘缓存溢出只会给我们带来麻烦,因为速度慢且容易出现 IO 错误。
【讨论】:
diskPersistent="false" 和overflowToDisk="false"。将其放入grails-app/config。调整了 timeToIdleSeconds 和 timeToLiveSeconds。