Кэш 2-го уровня с Hibernate уменьшает использование памяти или просто доступ к базе данных? - PullRequest
1 голос
/ 09 февраля 2012

Я в основном использую Hibernate, чтобы уменьшить потребление памяти моим приложением, потому что я могу хранить данные в базе данных, а не в памяти. По сути, есть одна основная сущность Song, которая представляет музыкальный файл, загруженный из каталога, но первое, что я делаю после добавления песни в базу данных (используя hibernate), это добавление ее в конвейер исполнителей для дальнейшей обработки, чтобы экземпляры объект, представляющий каждую песню, остается в памяти и остается таким до тех пор, пока песня не будет обработана, поэтому я не экономлю много памяти.

Моей первой мыслью было, чтобы я просто сохранил идентификаторы песен, когда я добавляю их в пиплэйн, и получаю фактическую сущность только тогда, когда требуется обработка, но, похоже, это работает против Hibernate, а не против.

Вместо этого я подумал, что если бы я использовал Ehcache с Hibernate, настроенным на использование дискового кэша, это означало бы, что используемые мной экземпляры не будут использовать много памяти, или они будут использовать столько же памяти, как раньше, когда я действительно имел ссылку на их в моем приложении.

1 Ответ

1 голос
/ 09 февраля 2012

Если у вас есть ссылка на сущность, то, очевидно, объект находится в памяти (если ссылка не является ссылкой на лени-загруженный прокси).

EHCache используется, чтобы избежать слишком частого обращения к базе данных и получения сущностей из кэша в памяти или на диске.Использование его увеличит объем памяти, а не уменьшит ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...