Pergunta

Eu quero cache de segundo nível uso na minha hibernação Projeto mas eu só sei um pouco sobre hibernate cache de segundo nível, qualquer um pode explicar como eu devo usar isso em meu código e qual configuração e eu preciso de arquivo .jar? Eu definir essas configurações para o meu arquivo hibernate.cfg.xml

 <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>

e adicioná-los arquivo jar ehcache-1.6.1.jar, ehcache-1.6.1-javadoc.jar, ehcache-1.6.1-sources.jar Eu quero saber Shoud eu alterar qualquer outra configuração?

e como eu posso entender que o meu projeto usa cache de segundo nível?

Se apenas colocar esta definição, hibernate automaticamente usar este ou devo usar outro código de formiga na minha classe .java (como qualquer anotação ou outra coisa)

Foi útil?

Solução

A anotação que você está procurando org.hibernate.annotations.Cache . uso básico é:

@Entity
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public MyEntity {
    ...

  @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
  public List<ElementType> getSomeCollection() {
    ...
  }
}

Para consultas, você precisa permitir consulta de cache definindo a propriedade hibernate.cache.use_query_cache como true e especifique essa consulta é cacheable na sua declaração (para consultas nomeadas) ou ligando para setCacheable(true) na instância de consulta.

Tudo o que disse, você precisa ter muito cuidado com o cache e realmente entender que você está fazendo, caso contrário, ele vai fazer mais mal do que ajuda. Não olhe para ele como "solução rápida" -. Caching tudo, por exemplo, é definitivamente a coisa errada a fazer

Outras dicas

Suas configurações fará com que o segundo nível e consulta armazena em cache disponíveis para uso em seu projeto, mas você ainda precisa habilitá-lo para entidades específicas, coleções e consultas. Isso requer um planejamento cuidadoso, porque há trade-offs que você precisa entender. Em geral, o segundo nível e caches de consulta são apropriados para somente leitura ou leitura principalmente dados, mas não dados voláteis. Se você já não possuí-lo, eu recomendo pegar uma cópia do Java Persistence com Hibernate . Tem um muito bom tratamento do assunto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top