Хранение данных в памяти

У меня есть "TABLE A" в базе данных, которая содержит 3 столбца "COL 1" , "COL 2" and "COL 3" с примерно 1000000 (1 миллионом) записей.

С этой таблицей я сопоставил простой POJO, скажем, "ClassA" с 3 переменными экземпляра "var1" , "var2" , "var3", а также определил там методы set() и get().

Мое приложение содержит простые JSP, сервлеты и POJO без причудливых фреймворков и других технологий.

На самом деле я хочу, чтобы при первом развертывании моего приложения на сервере приложений и самом первом запросе, который оно получило, только для этого запроса (только 1 раз) мой сервлет получил 1 миллион записей от TABLE A , сопоставляет ClassA с этими записями и начинает заполнять объекты для ClassA и сохранять их в векторе или ArrayList , поскольку вы, возможно, поняли, что мой Vector/ArrayList теперь будет содержать 1 миллион объектов, каждый из которых представляет record/tupple в "TableA" .

ОК, теперь перейдем к реальной и сложной части, я хочу, чтобы это Vector/ArrayList было stored/persisted/added в контексте приложения, или в виртуальной машине, или в любом другом месте хранения памяти (которое на самом деле я не знаю), так что каждый раз, когда мой JSP pages/Servlets доступ к объекту в памяти получения данных и не попадание в базу данных каждый раз.


person Mike Mugese    schedule 14.01.2013    source источник
comment
почему бы не использовать базу данных в памяти, такую ​​как hsqldb, которая будет действовать как кеш, и вы можете использовать свои любимые операторы SQL - заполняйте ее во время инициализации вашего приложения. Другой вариант — использовать кэш-решение, такое как JBoss infinispan.   -  person Usman Saleem    schedule 14.01.2013


Ответы (3)


Вы должны использовать Систему кэширования Java (см. здесь) или Ehcache (см. здесь) для хранения данных в кеше, инверсия управления strong> в Spring также в некотором роде помогает, но не уверен, поможет ли это хранить 1 миллион данных в куче, поскольку память кучи ограничена.

person Nicholas Bayborodin    schedule 14.01.2013

Похоже, вам нужно кэширование, если я правильно понимаю. Я бы порекомендовал взглянуть на EHcache или Infinispan здесь.

Надеюсь это поможет

person Mark Bramnik    schedule 14.01.2013

Я думаю, вы ищете способ кэшировать свои объекты.

Вы можете посмотреть ehcache.

or,

поскольку у вас есть большие объекты, вы можете посмотреть на реализацию репозитория объектов, например, noDB

person Mukul Goel    schedule 14.01.2013