Я делаю веб-приложение, которое предполагает возможность захвата определенных журналов компьютеров из нескольких универмагов. Приложение получает данные из базы данных SQL Server. В начале приложения я попрошу пользователя выбрать номер региона, чтобы сузить выбор. После выбора региона я звоню в БД, чтобы получить различные магазины в этой области (я создал класс Store, чтобы я мог легко создавать объекты). Я показываю их пользователю, чтобы они могли выбирать, какой магазин они хотят. После того, как пользователь выбирает свой магазин, я должен снова вызвать БД, чтобы получить список рабочих станций, принадлежащих этому хранилищу (опять же, у меня есть класс, называемый Workstation). Затем пользователь может выбрать рабочую станцию, выбрать день и месяц, из которых они хотят получить журнал, и нажать кнопку отправки.
Когда дело доходит до результатов кэширования из БД, я смущен тем, как это сделать. В идеале я бы кэшировал объекты Store и Workstation с помощью некоторого менеджера кэша, такого как JCS или EHCACHE. Мой первый оператор SQL для получения магазинов имеет предложение WHERE, проверяющее выбранный пользователем REGION. Итак, когда я получаю эти результаты обратно в объекте ResultSet, я повторяю их по очереди и проверяю, находятся ли они в кеше? Если их там нет, создайте объект Store и добавьте его. Если объект уже находится в кеше, используйте оператор continue, чтобы перейти к следующей итерации ResultSet?
И вы думаете, было бы даже разумно рассмотреть кэширование информации о журнале, которую просили в течение определенного дня и месяца, если это было в прошлом?
Я ищу некоторые рекомендации о том, как продолжить этот проект, и я был бы очень признателен, если бы кто-то мог помочь мне или дать мне общий подход или рекомендацию о том, как действовать дальше. Само программирование не является проблемой. Это просто мое незнание с кешированием.
Большое спасибо!
Затем пользователь может выбрать рабочую станцию, выбрать день и месяц, из которых они хотят получить журнал, и нажать кнопку отправки.
Исходя из этого утверждения, я предполагаю, что журнал для определенного дня и месяца не будет обновляться после его записи в базу данных.
Итак, когда я получаю эти результаты обратно в объекте ResultSet, я повторяю их по очереди и проверяю, находятся ли они в кеше?
Похоже, что использование Hibernate с кешем второго уровня и кэширование запросов было бы лучшим вариантом для вас вместо использования только кеша. Поскольку ваш вопрос представляет собой вопрос высокого уровня, я не буду вдаваться в подробности о том, что такое Hibernate и как нам спящий режим, а также настроить кеш второго уровня и кеш запросов.
См. Это для более подробной информации о кеше запросов. Статья немного устарела, но это помогло мне понять основы кеширования запросов.
И вы думаете, было бы даже разумно рассмотреть кэширование информации о журнале, которую просили в течение определенного дня и месяца, если это было в прошлом?
Я не думаю, что что-то не так в кэшировании прошлых данных. Основная цель кэширования данных - сделать данные, необходимые вашему приложению, доступными быстро, когда это необходимо. Если доступ к этим данным требует, чтобы вы попали в базу данных или читали их из файла каждый раз, когда нужны данные, кеш имеет смысл.