Как установить ограничение в Entitishanager (JPA) размер кэша L1 или L2
-
25-09-2019 - |
Вопрос
Как установить ограничение размера кэша L1 или L2. Я заботимся увеличением размера кэша. Один из способов определяет тайм-аут для кеша, но я хочу знать, возможно ли сделать ограничение для размера кэша или нет?
RGDS Navid
Решение
Как установить ограничение размера кэша L1
Вы не можете. Единственный вариант должен clear
контекст настойчивости вручную через регулярные промежутки времени, если вы хотите «контролировать» (на самом деле, clear
очень агрессивен, это удаляет Все объекты) его размер.
Как установить ограничение размера кеша L2
Это зависит от базового провайдера кэша. Другими словами, это делается путем настройки реализации кеша L2. Например, имеет Ehcache maxElementInMemory
параметр.
Что происходит в L1?! Сколько сущностей будут в памяти как проход времени? с любыми ограничениями?!
Столько, сколько вы ввели в него, до возможных OutOfMemoryError
, следовательно, необходимость clear
явно:
- на больших пакетных заданиях (даже если они возникают в одной транзакции)
- Если долговечный
EntityManager
используется
Но обычный шаблон - использовать недолговечный EntityManager
И большинство случаев использования не являются пакетными работами, поэтому это не проблема.
Смотрите также
- JPA Wiki Book