uando e como usar o cache de segundo nível de hibernaçã

Eu tenho problemas para entender quando o hibernate atinge o cache de segundo nível e quando ele invalida o cach

Este é o que eu entendo atualmente:

O cache de segundo nível armazena entidades entre as sessões, o escopo é o SessionFactory Você precisa informar quais entidades armazenar em cache; nenhuma entidade será armazenada em cache por padrão cache de consultas armazena os resultados das consultas no cach

O que eu não entendo é

Quando o hibernate atinge esse cache? Digamos que eu configurei o cache de segundo nível, mas não o cache de consulta. Quero armazenar meus clientes em cache, há 50000 deles. De que maneira posso recuperar os clientes do cache? Suponho que posso obtê-los por ID do cache. Isso seria fácil, mas também não seria digno de armazenamento em cache. Mas e se eu quiser fazer algum cálculo com todos os meus clientes. Digamos que eu queira mostrar uma lista dos clientes, como os acessaria?Como obteria todos os meus clientes se o cache de consultas estiver desativado?O que aconteceria se alguém atualizasse um dos clientes? Esse cliente seria invalidado no cache ou todos os clientes seriam invalidados?

Ou estou pensando em cache totalmente errado? Quais seriam os usos mais apropriados do cache de segundo nível nesse caso? A documentação do hibernate não está totalmente clara como o cache funciona na realidade. Existem apenas instruções sobre como configurá-lo.

Atualizar Então vim a entender que o cache de segundo nível (sem cache de consulta) seria bom para carregar dados por IDs. Por exemplo, tenho um objeto de usuário que desejo verificar permissões em todas as solicitações em um aplicativo da web. Esse seria um bom caso para reduzir o acesso ao banco de dados, armazenando em cache o usuário no cache de segundo nível? Como eu armazenaria o ID do usuário na sessão ou em qualquer lugar e quando eu precisar verificar as permissões, eu carregaria o usuário pelo ID e as permissõe

questionAnswers(3)

yourAnswerToTheQuestion