как установить ограничение в размере кеша EntityManager (JPA) L1 или L2 - PullRequest
2 голосов
/ 24 октября 2010

Как установить ограничение размера кэша L1 или L2. Я обеспокоен увеличением размера кэша. Одним из способов является определение времени ожидания для кэша, но я хочу знать, возможно ли установить ограничение для размера кэша или нет?

УВАЖЕНИЕ Навид

1 Ответ

3 голосов
/ 24 октября 2010

Как установить ограничение размера кэша L1

Ты не можешь. Единственный вариант - clear контекст постоянства вручную через регулярные промежутки времени, если вы хотите «контролировать» (на самом деле, clear очень агрессивно, он удаляет все лица ) его размер.

Как установить ограничение размера кэша L2

Это зависит от основного поставщика кеша. Другими словами, это делается путем настройки реализации кэша L2. Например, EHCache имеет параметр maxElementInMemory.


что происходит в L1 ?! сколько сущностей будет в памяти с течением времени? без каких-либо ограничений?!

Столько, сколько вы положите в него, до возможного OutOfMemoryError, следовательно, необходимо clear явно:

  • для больших пакетных заданий (даже если они выполняются в одной транзакции)
  • если используется долгоживущий EntityManager

Но обычно используется недолговечный EntityManager, и большинство вариантов использования не являются пакетными заданиями, поэтому это не проблема.

Смотри также

...