2015-08-02 2 views
3

Поскольку шаблон «open session in view» имеет некоторые недостатки (см. Why is Hibernate Open Session in View considered a bad practice?), мне интересно, что считается лучшим подходом при отображении результатов из запроса на спящий режим на страницу jsp?Лучший способ показать результаты запроса на спящий режим в jsp

Один из методов, о котором я думал, помещает объект java.util.list в запрос и выводит содержимое на страницу jsp. Существуют ли другие/лучшие методы?

+0

Я так понимаю, почему OSIV это плохая практика, что вы передаете свои объекты БД в свой передний конец программного обеспечения - простой общий пример будет иметь DTO из ваших объектов объекта, созданных вашим бэкэнд и переданных вашему интерфейсу. – Smutje

ответ

1

Лучший способ - использовать проекции DTO для ваших пользовательских представлений. Таким образом, вы можете избежать LazyInitializationExceptions и убедитесь, что вы получаете только то, что вам нужно, в определенном виде. С точки зрения производительности ничто не сравнится с проекцией SQL.

Проекция DTO выглядит следующим образом:

select new my.package.UserInfo(u.name, u.age, u.gender) 
from Users u 
+0

не уверен, что я понимаю, потому что я новичок в спящем режиме. Когда вы говорите прогнозы DTO, вы имеете в виду использование запросов Criteria? – morbidCode

+0

Вы можете использовать как критерии, так и HQL. Цель состоит в том, чтобы выбрать все в DTO вместо корневого Entity. –

+0

можете ли вы привести пример при выборе всего в DTO? Вы имеете в виду что-то вроде этого? session.createQuery (hql) .list() – morbidCode