Комментарии 6
какой простой лаконичный код!
НЛО прилетело и опубликовало эту надпись здесь
Зачем писать дао вручную, если в спринге есть репозитории? Да и в самих дао запросы нетипизированные, кастинг делается руками, что не очень хорошо. В JPA же есть параметризированные CriteriaQuery и др. Думаю, что в спринге тоже такое есть. Почему не использовать их?
Метод updateUser в UserServiceImpl — вообще бред. Если уж использовать ОРМ, то уж до конца. Персистентность там, все дела. Достаточно просто вызвать метод сохранения, ОРМ сам сумеет по id найти и обновить модель, зачем копировать атрибуты по-одному? (да и потом вообще новые данные нигде не используются и не сохраняются).
И непонятно, как же всё-таки решается проблема ленивой загрузки? Допустим пользователя получили. При попытке обратиться к полю userProfiles (например, при сериализации) вылезет ошибка, что мы уже вне сессии, и ленивые данные недоступны. Чтобы получить что надо, есть несколько способов: создать специальные namedQuery или построить запрос через CriteriaBuilder, получить ленивые поля в рамках одного метода, вместе с самой моделью, отдавать всё вместе. Или вызвать метод size() у ленивых полей (хотя это плохо). Есть ещё специфичные решения для Hibernate. Не заметил в статье решение этой проблемы.
Складывается ощущение, что автор сам хорошо не разобрался в инструменте, которым пользуется.
Метод updateUser в UserServiceImpl — вообще бред. Если уж использовать ОРМ, то уж до конца. Персистентность там, все дела. Достаточно просто вызвать метод сохранения, ОРМ сам сумеет по id найти и обновить модель, зачем копировать атрибуты по-одному? (да и потом вообще новые данные нигде не используются и не сохраняются).
И непонятно, как же всё-таки решается проблема ленивой загрузки? Допустим пользователя получили. При попытке обратиться к полю userProfiles (например, при сериализации) вылезет ошибка, что мы уже вне сессии, и ленивые данные недоступны. Чтобы получить что надо, есть несколько способов: создать специальные namedQuery или построить запрос через CriteriaBuilder, получить ленивые поля в рамках одного метода, вместе с самой моделью, отдавать всё вместе. Или вызвать метод size() у ленивых полей (хотя это плохо). Есть ещё специфичные решения для Hibernate. Не заметил в статье решение этой проблемы.
Складывается ощущение, что автор сам хорошо не разобрался в инструменте, которым пользуется.
НЛО прилетело и опубликовало эту надпись здесь
Ну и все листинги было бы неплохо под спойлер вынести.
Это приложение вообще рабочее? У меня не развыёртывается, «Установка конвертера в настройке XML, будет выглядеть следующим образом:» — почему файла настроек нет в общем виде проекта? «Сообщения, которые используются выше описаны в messages.properties файле:» — а где он? я просто на Спринге не одно приложения не смог запустить 6 дней уже сижу изучаю статьи, всё пишу как написано или половину сам догадываюсь, в итоге приложение не собирается и всё. Может есть гит?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Spring 4 MVC, Hibernate: ассоциация многие ко многим