Как стать автором
Обновить

Комментарии 4

НЛО прилетело и опубликовало эту надпись здесь

Не фанат JPA, но с некоторыми примерами из статьи абсолютно несогласен.

>Например, в приведенном ниже коде метод save() явно нигде не вызывается, но изменения в базе данных сохраняются.

Это же основное предназначение, сложно представить как оно бы могло по-другому работать. В данном примере это абсолютно адекватное и очевидное поведение. С таким же успехом можно жалваться что вы незнаете что делает save.

>Другая проблема — использование ленивой загрузки (Lazy fetch) в транзакциях...А в результате приложение отправит 5–10 запросов к базе данных и получит все связанные объекты, хотя вместо этого можно написать один SELECT, запрашивающий только необходимые данные.

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

Вот с кэшами согласен -кэши слишком умные и невсегда очевидные, легко выстрелить себе в ногу, я бы препочел более глупое, но явное кэшировани.

Видел запросы на нашей молотилке форм с 25 джоинами в одном запросе. Выкинуть ничего, конечно же, нельзя. Писать такое через JDBC, конечно, можно, но не очень-то весело.

А так да, хибернейт сложный, его надо учить, используюмую БД тоже надо учить, вообще много чего надо учить. К сожалению, без этого никуда, такая профессия. Если попробовать выкинуть хибернейт и начать делать своё решение, то рано или поздно так же к самопальному хибернейту и вернетесь — и не факт что получится лучше.

Чтобы писать запросы с 25 джоинами вы снчала их отлаживаете в самой БД , потом этот скрипт вставляете в ЯП , с хиберенет вы никогда не поймете правильный запрос или нет, тоесть вы делаеете тройную работу, ну и вы не можете select with index , вся идея использованать persists абсолютно не нужная , недостатков больше чем достоинств и излишняя сложность,

Зарегистрируйтесь на Хабре, чтобы оставить комментарий