Результат в сессии - PullRequest
       1

Результат в сессии

1 голос
/ 06 октября 2011

Каковы недостатки размещения набора результатов в сеансе?если нет, то это лучший из возможных способов. Я пытался поместить его в List<Map<String,String>>, это не влияет на производительность?

Ответы [ 2 ]

5 голосов
/ 06 октября 2011

A ResultSet представляет открытое соединение с базой данных; Как правило, вы хотите вывести свои данные и вернуть соединение с пулом как можно быстрее. Хранение ResultSet в сеансе оставляет открытой возможность того, что соединение не будет закрыто в течение длительного времени, что может исчерпать пул или излишне связать ресурсы базы данных.

3 голосов
/ 06 октября 2011

Классы персистентности от java.sql не должны находиться в пределах 100 футов от веб-уровня. Они никогда не должны убегать от персистентного слоя. Вам необходимо загрузить каждый ResultSet в структуру данных или объект в области метода, в которой он был создан, и закрыть его. Это курсор базы данных, дефицитный ресурс.

Ваш лучший вариант не List<Map<String, String>>; в конце концов, каждое значение в базе данных не является строкой. Лучше использовать List<Map<String, Object>>, где карта представляет собой строку. Другая возможность - Map<String, List<Object>>, где каждый List<Object> представляет столбец. Используйте тот, который наиболее удобен для вашего случая использования. Лучше всего использовать List<T>, где T - это тип объекта, который реально связывает все эти столбцы.

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