Комментарии 4
Не фанат JPA, но с некоторыми примерами из статьи абсолютно несогласен.
>Например, в приведенном ниже коде метод save()
явно нигде не вызывается, но изменения в базе данных сохраняются.
Это же основное предназначение, сложно представить как оно бы могло по-другому работать. В данном примере это абсолютно адекватное и очевидное поведение. С таким же успехом можно жалваться что вы незнаете что делает save.
>Другая проблема — использование ленивой загрузки (Lazy fetch) в транзакциях...А в результате приложение отправит 5–10 запросов к базе данных и получит все связанные объекты, хотя вместо этого можно написать один SELECT, запрашивающий только необходимые данные.
Ну да, иногда ленивая загрузка это хорошо, иногда плохо. Но вы явно указали в коде что хотите использовать ленивую загрузку, а потом жалуетесь на это?
Вот с кэшами согласен -кэши слишком умные и невсегда очевидные, легко выстрелить себе в ногу, я бы препочел более глупое, но явное кэшировани.
А так да, хибернейт сложный, его надо учить, используюмую БД тоже надо учить, вообще много чего надо учить. К сожалению, без этого никуда, такая профессия. Если попробовать выкинуть хибернейт и начать делать своё решение, то рано или поздно так же к самопальному хибернейту и вернетесь — и не факт что получится лучше.
Чтобы писать запросы с 25 джоинами вы снчала их отлаживаете в самой БД , потом этот скрипт вставляете в ЯП , с хиберенет вы никогда не поймете правильный запрос или нет, тоесть вы делаеете тройную работу, ну и вы не можете select with index , вся идея использованать persists абсолютно не нужная , недостатков больше чем достоинств и излишняя сложность,
Подумайте дважды, нужен ли вам Hibernate