Понимание JBossCache - кэширование графа объектов со многими ассоциациями - PullRequest
1 голос
/ 28 июля 2011

Я пытаюсь использовать JBossCache в качестве провайдера кэш-памяти второго уровня JPA / Hibernate для кеширования неоднократно вызываемых запросов. Запросы возвращают сущности определенного типа, назовем их FooType.

FooType выглядит следующим образом:

@Entity(name = FooType)
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class FooType {
   protected BarType barType;

   @ManyToOne(targetEntity = BarType.class, cascade = {
       CascadeType.ALL
   })
   BarType getBarType() {
       return barType;
   }
}

Итак, у Footype есть связь «многие-к-одному». Теперь, когда я вызываю запрос, кажется, что в кеш помещается только очень маленькая часть. Я думаю, что причина в том, что я не пометил ассоциацию с тегом @Cache. Я прав?

Но настоящий вопрос:

BarType также имеет несколько ассоциаций, и они возвращают объекты, которые также предоставляют ассоциации и т. Д., Создавая большой граф ассоциаций. Теперь мне нужно

а) комментирует все эти классы и

b) также комментируют ассоциации

для того, чтобы весь запрос был кэширован?

1 Ответ

1 голос
/ 29 июля 2011

Все сущности / коллекции, которые вы хотите кэшировать, должны иметь @Cache, чтобы их можно было кэшировать. Кеш запросов работает немного по-другому, чтобы получить результаты в кеше, нужно сделать объект запроса кешируемым.

Кстати, как всегда, кеш, если это действительно имеет смысл!

http://docs.jboss.org/hibernate/core/3.5/reference/en/html/performance.html#performance-cache

...