Olá, me surgiu uma dúvida quanto ao uso do cache de segundo nível. No lugar de ajudar ele pode se tornar motivo de dor e cabeça, vejamos bem se vc acessa o produto "livro de arquitetura e design" ele armazena o produto no cache, ai depois você acessa o produto "flauta doce", ele armazena a flauta doce no cache, vc continua navegando no site e adiciona o "curso de violão", então é adicionado o curso de violão no cache de segundo nível, agora imagina um site com muitos produtos, vai chegar uma hora que este cache vai estar gigante, pelo menos foi oque constatei com um código simples:
public class TestaCache {
public static void main(String[] args) {
EntityManager em1 = JPAUtil.criaEntityManager();
EntityManager em2 = JPAUtil.criaEntityManager();
System.out.println("realiza um select para recuperar o menu");
Menu m1 = em1.find(Menu.class, 2L);
System.out.println("em2 não realiza a busca pois o menu já está no cache");
Menu m2 = em2.find(Menu.class, 2L);
System.out.println("realiza uma outra busca para recuperar outro menu");
Menu m3 = em1.find(Menu.class, 5L);
System.out.println("em2 não realiza a busca pois o outro menu já está no cache");
Menu m4 = em2.find(Menu.class, 5L);
System.out.println("recupera novamente o primeiro menu, não realiza a busca pois já está no cache");
Menu m5 = em2.find(Menu.class, 2L);
System.out.println("pra cada menu que eu acessar ,vai para o cache, isso vai crescer indefinidamente?");
}
}
Este é mesmo o comportamento? se for isso é um pouco problemático, como fazer para contornar esta situação e não ter caches gigantescos?