как я могу кэшировать массив

У меня есть одно приложение, которое снова и снова запускает один и тот же запрос при каждом запросе страницы, поступающем из браузера. поэтому я хочу кэшировать этот результат запроса при первом запуске запроса, что приводит к arraylist, чтобы при каждом запросе, поступающем из браузера, он не должен запускать один и тот же запрос снова и снова.

не могли бы вы поделиться своими мыслями или предложениями?

Изменить:

Frameworks: я использую ibatis framework для запросов к базе данных и struts с displaytag для пользовательского интерфейса.

Вот фрагмент кода:

if (req.getParameter("d-2464500-p") == null) {
    UserService userService = UserServiceFactory.getUserService();
    long startTime1 = System.nanoTime();
    log.info("start time is :" + startTime1);
    userList = userService.getUserList();
} else {
    // I want to use the same queried userList for the other pages
    // so that i should not go and fire the query
}

person Deepak Jain    schedule 26.04.2017    source источник
comment
Используете ли вы какой-то конкретный фреймворк? Это повлияет на тип решения, которое вы можете использовать. Вы кэшируете запрос к базе данных или вызов другой службы? Некоторые подробности и пример кода были бы полезны.   -  person Matt Watson    schedule 26.04.2017
comment
@MattWatson Я использую ibatis framework для запросов к базе данных и стойки с displaytag для пользовательского интерфейса. Я запрашиваю один раз для первой страницы и хочу сохранить этот массив в кэше или что-то подобное, чтобы я не запрашивал снова тот же массив на других страницах.   -  person Deepak Jain    schedule 26.04.2017
comment
Затем вы должны добавить эту информацию к вопросу - вместе с вашим кодом. Это повысит вероятность того, что кто-то, кто знает об этих фреймворках, ответит на ваш вопрос.   -  person Matt Watson    schedule 26.04.2017
comment
@MattWatson Я не был уверен, должен ли я публиковать информацию и код фреймворков для такого типа вопросов, поэтому я не стал этого делать.   -  person Deepak Jain    schedule 26.04.2017
comment
@MattWatson Я обновил вопрос с этими вещами   -  person Deepak Jain    schedule 26.04.2017


Ответы (1)


Почему не ленивая загрузка? Что-то вроде этого:

private List<?> userList = null;

private List<?> getUserList() {
    if(this.userList == null) {
        UserService userService = UserServiceFactory.getUserService();
        long startTime1 = System.nanoTime();
        log.info("start time is :" + startTime1);
        userList = userService.getUserList();
    }
    return userList;
}

и используйте метод getUserList() для получения ваших пользователей.

person Community    schedule 26.04.2017
comment
Это будет работать, если список не изменится. Если мне нужно что-то добавить или удалить, это не отразится на пользовательском интерфейсе до тех пор, пока мы не перезапустим сервер. У меня есть возможность редактировать, удалять и добавлять нового пользователя, так что это не сработает - person Deepak Jain; 27.04.2017
comment
В этом случае я советую вам взглянуть на сторонний фреймворк кэширования. Эхкэш великолепен. www.ehcache.org - person ; 27.04.2017
comment
Да, это было бы здорово. - person Deepak Jain; 27.04.2017