Доступ к (Глобальной) переменной в JSP, Сервлет для сокращения вызовов базы данных - PullRequest
0 голосов
/ 22 января 2012

Поскольку я разрабатываю веб-приложение на J2EE, я должен быть очень осторожен с вызовами базы данных.

Я храню изображения в базе данных (BLOB).

Для доступа к этимизображения, я создал файл сервлета.

Я передаю идентификатор этому файлу как GET метод.

Для отображения изображения мне нужно вызвать этот файл сервлета.

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

Например:

Если в этом конкретном файле jsp я хочу показать 3 строки, я сделаю1 вызов для отображения этих строк И еще 3 вызова для отображения этих изображений.

У меня есть 2 варианта

  1. Создание глобальной переменной и доступ к этой переменной как в jsp, так и в сервлете.
  2. Вместо создания глобальной переменной передайте объект базы данных в переменную сеанса.

Но для меня оба не годятся.Пожалуйста, предложите что-нибудь.

Ответы [ 2 ]

3 голосов
/ 22 января 2012

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

Таким образом, когда вам нужно отобразить три изображения на одной странице, вы выполняете один запрос, чтобы получить пути к трем изображениям, и генерируете страницу HTML, содержащую 3 пути.

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

0 голосов
/ 25 января 2012

Вместо многократного попадания в базу данных.Просто напишите запрос, в котором вы получите все нужные вам строки или изображения.И отображать все строки изображений с помощью ArrayList. Это было бы гораздо более простым способом :)

...