2014-01-22 4 views
0

Im пытается использовать кеш-ehcache для грааля, который кажется довольно простым в настройке и работе с! Однако, если я читаю документацию правильно должно работать и возвращать кэшированные результаты:Grails с плагином Cache-Ehcache - кэш второго уровня

DataSource.groovy:

hibernate { 
    cache.use_second_level_cache = true 
    cache.use_query_cache = true 
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' 
} 

Config.groovy:

grails.cache.config = { 
    domain { 
    name 'com.mycompany.User' 
    } 
} 

MyClass:

User.findByMyField("myVal", [cache:true]) 

Но это не работает для меня, если я не добавить следующее User.groovy

static mapping = { 
    cache true 
} 

Я был под впечатлением, что изменения в пользователя не было необходимости, так как это то, что «домен {}» блок в Config.groovy был определяющим, но я просто не могу заставить его работать без него иначе.

Я действительно хочу избежать изменения User.class, поскольку он используется для нескольких проектов, которые я не хочу, чтобы меня затронули!

Любые предложения будут оценены!

ответ

1

Метод domain в DSL - это просто псевдоним, чтобы сделать конфигурацию более интуитивной, но это не влияет на то, кэшируется ли класс домена, как он кэшируется, когда он включен. Вам все равно необходимо включить кеширование в целом с помощью cache.use_second_level_cache = true и настроить кэширование в классах домена.

Кэширование второго уровня в Hibernate основано на интерфейсах, и большая часть реальной работы выполняется с помощью выбранной вами реализации. Поэтому вам нужно начать все с Hibernate, а GORM использует метод cache в блоке mapping, но для этого нужно выполнить конфигурацию, специфичную для реализации, чтобы настроить кеширование, и именно там вам нужно работать с Ehcache API напрямую или косвенно, например через этот DSL.

+0

Большое спасибо. Спасибо, что я подумал, что хорошо, так как я все еще должен уметь оставлять эти изменения из других проектов, просто оставив second_level_cache. – Kostya

Смежные вопросы