Como definir a limitação no EntityManager (JPA) L1 ou L2 Tamanho do cache
-
25-09-2019 - |
Pergunta
Como definir limitação do tamanho do cache L1 ou L2. Preocupação de aumentar o tamanho do cache. Uma maneira é definir o tempo limite para o cache, mas quero saber que é possível fazer uma restrição para o tamanho do cache ou não?
Rgds Navid
Solução
Como definir limitação do tamanho do cache L1
Você não pode. A única opção é clear
O contexto de persistência manualmente em intervalos regulares, se você quiser "controlar" (na verdade, clear
é muito agressivo, ele remove todas as entidades) seu tamanho.
Como definir limitação do tamanho do cache L2
Isso depende do provedor de cache subjacente. Em outras palavras, isso é feito configurando a implementação do cache L2. Por exemplo, o ehcache tem um maxElementInMemory
parâmetro.
O que acontece em L1?! Quanta entidade estará na memória com o passar do tempo? sem restrições?!
Por mais que você coloque nele, até um eventual OutOfMemoryError
, daí a necessidade de clear
explicitamente:
- em grandes trabalhos em lote (mesmo que ocorram em uma única transação)
- Se uma vida longa
EntityManager
é usado
Mas o padrão usual é usar uma vida curta EntityManager
E a maioria dos casos de uso não são trabalhos em lote, então isso não é uma preocupação.
Veja também
- Livro da Wiki JPA