powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate must die!
40 сообщений из 40, показаны все 2 страниц
Hibernate must die!
    #33974793
Java - dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hibernate позволяет быстро написать плохой код:-(
вот собственно и все.
Он пригоден только для простых вещей,
те запросы,которые он генерит,на промышленных объемах уже не срабатывают,как надо.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33974828
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java - devHibernate позволяет быстро написать плохой код:-(
вот собственно и все.
Он пригоден только для простых вещей,
те запросы,которые он генерит,на промышленных объемах уже не срабатывают,как надо.

Гонишь.

Хибернейт не избавляет от необходимости знания SQL и представления о том, что происходит при попытке вытащить дерево объектов.

Нужно
а) пользоваться кешем второго уровня.
б) писать критерии, которые позволяют вытащить из базы только те данные, что действительно нужны.
в) для массовых операций (update, н-р) использовать соответствующий аналог hql.
д) там где действительно "тяжело" - можно написать несколько native sql или stored procedures
...
Рейтинг: 0 / 0
Hibernate must die!
    #33974875
Фотография fleh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда мне было 3 года, я не понимал для чего же люди используют
унитазы. ведь ими очень и очень неудобно пользоваться... туда ж
совершенно невозможно попасть и все льется мимо!!! сейчас я немного
вырос и, вспоминая те дни, улыбаюсь. унитазы намного лучше горшков!!

PS извините за подробности
...
Рейтинг: 0 / 0
Hibernate must die!
    #33975523
javarulez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Java - devHibernate позволяет быстро написать плохой код:-(
вот собственно и все.
Он пригоден только для простых вещей,
те запросы,которые он генерит,на промышленных объемах уже не срабатывают,как надо.Пеши промышленное приложение на dbf и Clippere, а лучше на Delphi BDS 2006. Об успехах расскажешь в теме
...
Рейтинг: 0 / 0
Hibernate must die!
    #33975524
javarulez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Java - devHibernate позволяет быстро написать плохой код:-(
вот собственно и все.
Он пригоден только для простых вещей,
те запросы,которые он генерит,на промышленных объемах уже не срабатывают,как надо.Кстати, ты в курсе? "Архитектуру промышленных приложений" Фаулера переведенную на русский, уже даже отсканировали и ввыложили в сеть. специально для тех, кто не может асилить английский
...
Рейтинг: 0 / 0
Hibernate must die!
    #33975536
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javarulezКстати, ты в курсе? "Архитектуру промышленных приложений" Фаулера переведенную на русский, уже даже отсканировали и ввыложили в сеть. специально для тех, кто не может асилить английский

Правда что-ли?
А как её найти, не подскажешь?
Давно отсканированную и выложенную в сеть?
Которая называется "Архитектура корпоративных программных приложений", к слову.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33975641
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javarulezКстати, ты в курсе? "Архитектуру промышленных приложений" Фаулера переведенную на русский, уже даже отсканировали и ввыложили в сеть. специально для тех, кто не может асилить английский
Я бы тоже почитал =D
...
Рейтинг: 0 / 0
Hibernate must die!
    #33975727
@втор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
он же javarulezКстати, ты в курсе? "Архитектуру промышленных приложений" Фаулера переведенную на русский, уже даже отсканировали и ввыложили в сеть. специально для тех, кто не может асилить английский

Правда что-ли?
А как её найти, не подскажешь?
Ты понимаешь какая штука! На русском еще можно читать разве что Кнута, которого перевели какчественно, и давно, грамотные перевотчеки и термины он использует больше математические. Читать же Фаулера надо в подленнике, иначе в голове останется только каша из непонятных "паттернов дезайна" вместо "шаблонов проектирования"

Впрочем, вот http://c-books.info/books/news5php/2006/09/07/arxitektura-korporativnyx-programmnyx-prilozhenii.html
...
Рейтинг: 0 / 0
Hibernate must die!
    #33975988
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@вторЧитать же Фаулера надо в подленнике, иначе в голове останется только каша из непонятных "паттернов дезайна" вместо "шаблонов проектирования"

Имея перед мордой лица подлинник Хорстманна/Корнела и его переведенную версию - не могу не согласиться, что читать лучше в подлиннике.
Это если только знания английского на уровне выше среднего.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33976081
@втор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
он же @вторЧитать же Фаулера надо в подленнике, иначе в голове останется только каша из непонятных "паттернов дезайна" вместо "шаблонов проектирования"

Имея перед мордой лица подлинник Хорстманна/Корнела и его переведенную версию - не могу не согласиться, что читать лучше в подлиннике.
Это если только знания английского на уровне выше среднего.А я еще хотел купить оба тома русского издания. Теперь точно не куплю.

Ты понимаешь, зная только русский со словарем, можно программить на 1С, на Форте, на Фокале, на ДВК-бейсике каконтамбишьназывался. Но программировать на Java не зная английского все равно делать хирургическую операцию не зная анатомии. Ты ляжешь под нож такому херургу?
...
Рейтинг: 0 / 0
Hibernate must die!
    #33976597
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@вторНо программировать на Java , не зная английского , это все равно , что делать хирургическую операцию , не зная анатомии. Ты ляжешь под нож такому х И рургу?

Можно ли программировать вообще, не зная русского языка даже в объеме пяти классов ЦПШ ?
...
Рейтинг: 0 / 0
Hibernate must die!
    #33976692
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grexhide @вторНо программировать на Java , не зная английского , это все равно , что делать хирургическую операцию , не зная анатомии. Ты ляжешь под нож такому х И рургу?

Можно ли программировать вообще, не зная русского языка даже в объеме пяти классов ЦПШ ?
[offtopic]
Ну, сторго говоря, в данном контексте (хирург, не знающий анатомии) можно сказать и "ХЕРург".[/offtopic]
...
Рейтинг: 0 / 0
Hibernate must die!
    #33976734
@втор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grexhide @вторНо программировать на Java , не зная английского , это все равно , что делать хирургическую операцию , не зная анатомии. Ты ляжешь под нож такому х И рургу?

Можно ли программировать вообще, не зная русского языка даже в объеме пяти классов ЦПШ ?Штобы программировать на джаве, не обязательно уметь хорошо песать по русски. Достаточно хорошо уметь читать по-английски, ну, и немного, по-русски
...
Рейтинг: 0 / 0
Hibernate must die!
    #33976762
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@втор grexhide @вторНо программировать на Java , не зная английского , это все равно , что делать хирургическую операцию , не зная анатомии. Ты ляжешь под нож такому х И рургу?

Можно ли программировать вообще, не зная русского языка даже в объеме пяти классов ЦПШ ?Штобы программировать на джаве, не обязательно уметь хорошо песать по русски. Достаточно хорошо уметь читать по-английски, ну, и немного, по-русски

"Чукча аднака не песатель , чукча - по-английски двава-читатель, программист, кароче" (с)
...
Рейтинг: 0 / 0
Hibernate must die!
    #33977131
Dremmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NotGonnaGetUs Java - devHibernate позволяет быстро написать плохой код:-(
вот собственно и все.
Он пригоден только для простых вещей,
те запросы,которые он генерит,на промышленных объемах уже не срабатывают,как надо.

Гонишь.

Хибернейт не избавляет от необходимости знания SQL и представления о том, что происходит при попытке вытащить дерево объектов.

Нужно
а) пользоваться кешем второго уровня.
б) писать критерии, которые позволяют вытащить из базы только те данные, что действительно нужны.
в) для массовых операций (update, н-р) использовать соответствующий аналог hql.
д) там где действительно "тяжело" - можно написать несколько native sql или stored procedures
Согласен с тем что
>>Он пригоден только для простых вещей
Полгода и ним ебал??ь, пишем NMS, но наверно у нас предметная область не та, или разработчик БД "неправильный".
ИТОГО:
>>а) пользоваться кешем второго уровня.
только мешает, т.к. кэшировать selectы БРЕД

>>б) писать критерии, которые позволяют вытащить из базы только те данные, что действительно нужны.
Писать критерии к 8-10 объектам, Hibernate вроде для облегчение разработки, SQL это делает проще

>>д) там где действительно "тяжело" - можно написать несколько native sql или stored procedures
К этому и пришли, т.к. при разработки ПО все не просчитаеш, даже "чтение мыслей заказчика" не поможет, а stored procedures являются "более стабильным интерфейсов" между разработчиками.
В итоге Hibernate используется только как Connect к БД, Hibernate must die!

Если есть готовая БД и к ней нужно написать новый интерфейс, тогда Hibernate может и прокатит....
...
Рейтинг: 0 / 0
Hibernate must die!
    #33977191
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а) НЕ БРЕД, потому что
Например, используем в приложении безопасность, встроенную в приложение. Каждый запрос будь то к странице, либо к методам, охваченным безопасностью, предполагает (1) аутентификацию и (2) авторизацию. Кеширование таких редко изменяемых объектов, какими могут (не всегда конечно) являться пользователи системы, скажем, в течение 5 минут, избавляет от накладных расходов на выполнение запроса к БД при каждом обращении к ресурсу.
Это простейший пример, с которым столкнулся, и думаю, отнюдь не единственный.
б) Хотел бы посмотреть на то, насколько выростет количество "простых" методов чтения необходимых данных из БД. Почему простых в кавычках - да потому что это туча строк повторяющегося кода с созданием Statement-ов, и прохода по ResultSet-ам. Причем, половина программеров все время забывает закрывать эти ресурсы при выходе из метода. Конечно, всегда можно на SQL сделать что-то оптимальнее для одной БД.
в) хранимые процедуры подходят больше именно для кода, написанного с использованием JDBC, и для одной, ну может быть, двух БД. Остальные БД остаются не у дел. А если нужен массовый продукт?

Почитай "Hibernate in Action" еще разок. А то приходит на ум "Some programmers must die". Будут еще претензии - с радостью выскажу свое мнение.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33977197
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, использовал в приложении с 22 таблицами БД. Не большой проект, но сказать, что маленький тоже вроде язык не поворачивается. Может, потому что писала ну очень небольшая группа людей и пришлось пройти через все стадии процесса и заниматься всеми аспектами и проблемами.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33977273
Dremmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в) хранимые процедуры подходят больше именно для кода, написанного с использованием JDBC, и для одной, ну может быть, двух БД. Остальные БД остаются не у дел. А если нужен массовый продукт?

Кстати, использовал в приложении с 22 таблицами БД. Не большой проект, но сказать, что маленький тоже вроде язык не поворачивается. Может, потому что писала ну очень небольшая группа людей и пришлось пройти через все стадии процесса и заниматься всеми аспектами и проблемами.

Если проверять права доступа для каждого метода, тогда кэшировать is good, но не совсем понят как решать проблемы с многопользовательским доступом?
>>туча строк повторяющегося кода с созданием Statement-ов
туча строк повторяющегося кода с созданием критерий.

Массовый продукт = любая БД? т.е. НЕ использовать преимущества конкретной БД, зато и на Oracle и на Accese пойдет без изменения кода...
От Hibernate ждали ускорение разработки, при меняющейся БД, прицедуры==запросы, удобнее.

>>Кстати, использовал в приложении с 22 таблицами БД. Не большой проект, но
>>сказать, что маленький тоже вроде язык не поворачивается. Может, потому >>что писала ну очень небольшая группа людей и пришлось пройти через все >>стадии процесса и заниматься всеми аспектами и проблемами.
И на "5 таблиц" можно сотню форм своять, большой проект != много таблиц.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33977282
Dremmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 первых абзаца лишнии
...
Рейтинг: 0 / 0
Hibernate must die!
    #33977326
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackWall
б) Хотел бы посмотреть на то, насколько выростет количество "простых" методов чтения необходимых данных из БД. Почему простых в кавычках - да потому что это туча строк повторяющегося кода с созданием Statement-ов, и прохода по ResultSet-ам. Причем, половина программеров все время забывает закрывать эти ресурсы при выходе из метода. Конечно, всегда можно на SQL сделать что-то оптимальнее для одной БД.
в) хранимые процедуры подходят больше именно для кода, написанного с использованием JDBC, и для одной, ну может быть, двух БД. Остальные БД остаются не у дел. А если нужен массовый продукт?

Почитай "Hibernate in Action" еще разок. А то приходит на ум "Some programmers must die". Будут еще претензии - с радостью выскажу свое мнение.
б) легко решается надстройкой над ждбц. удобно, практично. ждбц в явном виде использовать вообще некошерно.
в) хотел чето написать. забил. "массовый" это утопия.
Книжка дурная какая то. Пытался почетать - убожество, сильно не понравилась (уже не помню что конкретно). Дока рулез.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33978350
Ora-Junior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как себя ведет HIBERNATE на промышленных объемах данных ,когда строк в таблице больше 10 000 000? Оптимально ли генерирует запросы?
Понятное дело,если в базки таблицы с кол-вом записей 500 000, то любые запросы можно пулять - она съест.
И чем настройка критериев HIBERNATE облегачает жизнь,чем написание SQL.
То есть использую HIBERNATE, кроме самого SQL, надо знать еще,как настраивать сам HIBERNATE - где ж здесь облегчение?
...
Рейтинг: 0 / 0
Hibernate must die!
    #33978365
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ora-Junior... Оптимально ли генерирует запросы?
Смотря как попросишь.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33978841
Ora-Junior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Timm Ora-Junior... Оптимально ли генерирует запросы?
Смотря как попросишь.
То есть мне надо ,знать как извратить HIBERNATE,что бы выдать заранее определенный оптимальный запрос?
Запрос известен, мне вместо того,что бы его написать - надо еще извратится настроить HIBERNATE таким образом,что бы он его сгенерил.
Получается лишний посредник.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33978906
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ora-Junior Timm Ora-Junior... Оптимально ли генерирует запросы?
Смотря как попросишь.
То есть мне надо ,знать как извратить HIBERNATE,что бы выдать заранее определенный оптимальный запрос?
Запрос известен, мне вместо того,что бы его написать - надо еще извратится настроить HIBERNATE таким образом,что бы он его сгенерил.
Получается лишний посредник.
Вот блин.
Зависит чаще всего от кривости рук. Впрочем, как всегда.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33979009
slavic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:)
Hibernate must die!
SQL rulez
...
Рейтинг: 0 / 0
Hibernate must die!
    #33979104
Евгений Путилин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ora-JuniorТо есть мне надо ,знать как извратить HIBERNATE,что бы выдать заранее определенный оптимальный запрос?
Запрос известен, мне вместо того,что бы его написать - надо еще извратится настроить HIBERNATE таким образом,что бы он его сгенерил.
Получается лишний посредник.
Знакомо ли товаварисчу понятие плана запроса? Хинты Oracla и т.д.?
Все выше сказанные аргументы говорят о том что чел который задает не понимает работу технологии, если брать допотопный паскаль то file of record будет читать гораздо быстрее любой RDBMS, но им почему то не пользуются :-)

Интересно ктонибуть назовет жизненный Use case где требуется выборки и обработка 500 000 записей? Я нет.

Плюс технологий не то что они какюто операцию позволяют делать быстрее а что в целом комплексе отказываясь от некоторых операций и заменяя одни на другие в целом получается выигрыш.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33979163
@втор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ora-JuniorА как себя ведет HIBERNATE на промышленных объемах данных ,когда строк в таблице больше 10 000 000? Оптимально ли генерирует запросы?
Понятное дело,если в базки таблицы с кол-вом записей 500 000, то любые запросы можно пулять - она съест.
И чем настройка критериев HIBERNATE облегачает жизнь,чем написание SQL.
То есть использую HIBERNATE, кроме самого SQL, надо знать еще,как настраивать сам HIBERNATE - где ж здесь облегчение?HIBERNATE не нужен для того, чтобы обрабатывать таблицы из десятков млн. строк. Для этого у админа есть SQL, JDBC, iBatis etc. ЧИТАЙТЕ наконец "POJOs in Action", бестолочи!!! Hibernate - это ORM!! Object-Relational Mapping. Он нужен чтобы строку из таблицы представить в программе как объект. Причем тут объем таблиц? Что, одну строку по первичному ключу из базы в 10млн. строк Oracle будет вытаскивать в 20 раз дольше, чем из таблицы в которой всего 500 000 строк? "Не верю!"
...
Рейтинг: 0 / 0
Hibernate must die!
    #33979220
Ora-Junior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
@втор Ora-JuniorА как себя ведет HIBERNATE на промышленных объемах данных ,когда строк в таблице больше 10 000 000? Оптимально ли генерирует запросы?
Понятное дело,если в базки таблицы с кол-вом записей 500 000, то любые запросы можно пулять - она съест.
И чем настройка критериев HIBERNATE облегачает жизнь,чем написание SQL.
То есть использую HIBERNATE, кроме самого SQL, надо знать еще,как настраивать сам HIBERNATE - где ж здесь облегчение?HIBERNATE не нужен для того, чтобы обрабатывать таблицы из десятков млн. строк. Для этого у админа есть SQL, JDBC, iBatis etc. ЧИТАЙТЕ наконец "POJOs in Action", бестолочи!!! Hibernate - это ORM!! Object-Relational Mapping. Он нужен чтобы строку из таблицы представить в программе как объект. Причем тут объем таблиц? Что, одну строку по первичному ключу из базы в 10млн. строк Oracle будет вытаскивать в 20 раз дольше, чем из таблицы в которой всего 500 000 строк? "Не верю!"
Вот именно,что Oracle одну строку вытащит мгновенно.
А объем таблицы при том,что Hibernate иногда такие запросы генерит(особенно где идет объединение нескольких таблиц),что база падает и зависает.
С простейшими запросами то понятное дело,что все нормально
...
Рейтинг: 0 / 0
Hibernate must die!
    #33979230
Ora-Junior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот у нас работа так сделана:
когда увидели,что hibernare генерит откровенную херню при соединениями таблиц,то сделали так.
Сложные запросы стали прятать в представлениях - а Java-объекты уже мапятся на них. Т.е один фиг запросы ручками писали.Вот и вся хваленая инкапсуляция HIBERNATE.
на что он способен - это на простейший маппинг
...
Рейтинг: 0 / 0
Hibernate must die!
    #33979278
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DremmmСогласен с тем что
>>Он пригоден только для простых вещей
Полгода и ним ебал??ь, пишем NMS, но наверно у нас предметная область не та, или разработчик БД "неправильный".

Кто понимается под "разработчик БД"? Тот кто схему в базе наваял, или тот кто пишет код для взаимодействия с db?

Dremmm
ИТОГО:
>>а) пользоваться кешем второго уровня.
только мешает, т.к. кэшировать selectы БРЕД


Кешируются не select'ы. Кешируются объекты предметной области.
Если есть основания полагать, что ветка дерева объектов остаётся неизменной в течении хотя бы десятка циклов request-responce, то имеет смысл подумать о кешировании.

Неужели ваша система - это просто набор javabeans один к одному положенных на строки таблиц, к тому же изменяющихся с огромной скоростью?!

Dremmm
>>б) писать критерии, которые позволяют вытащить из базы только те данные, что действительно нужны.
Писать критерии к 8-10 объектам, Hibernate вроде для облегчение разработки, SQL это делает проще


Sql - это решение "в лоб".
Написано "select" - значит пошёл в базу, и плевать, что тремя строчками выше был выполнен такой же точно селект.

Это приводит к подобному коду (transaction script согласно Фаулеру):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 
 class  MegaSpecificManager {
       void  transaction_SubmitYYYFrom(*List of params*) {
                dao.getXXX();
                dao.setZZZ();
                commitChanges();
      }
       void  transaction_SubmitZZZFrom(*List of params*) {
                dao.getZZZ();
                dao.setXXX();
                commitChanges();
      }
}
В таком коде даже функциональная декомпозиция с трудом выживает, т.к. хрен поймёшь какие обращение к dao (или jdbc) были/будут сделаны выше/ниже по стеку вызова методов и где начало/конец транзакции, а значит избежать дублирования запросов практически не реально, равно как и обеспечить бизнес транзакции.

Конечно, это можно обойти, но только через постоянные кодоревью и жесткие предписания "как делать не надо".

Hibernate же позволяет выполнять "физические" select'ы "перпендикулярно" к написанному коду.

Допустим у нас есть метод Х, которому нужно получить какой-то объект.

Если в текущей транзакции мы уже достали этот объект из базы, то вместо запроса к базе, будет выполнено обращение к кешу первого уровня.

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

Если в какой-то момент мы понимаем, что потребуется вытаскивать не один-два объекта, а много (и каждый в своём методе ака Х), то мы можем выполнить fetch нужных нам веток заранее, что позволит избежать лишних запросов.

Чтобы проделать аналогичные действия пользуясь простым jdbc, придётся расписывать sql для каждой транзакции от начала и до конца, либо писать свой orm. Это "не плохо", но порождает значительное количество кода, которое нужно поддерживать, что в конечном итоге только усложняет разработку.

Имхо, лучше иметь 7 человек, которые пишут ООП (!) код и не вникают глубоко в проблемы ОRM маппинга и одного человека, который хорошо понимает, что это такое и занимается профилированием хибернейт, чем 20 человек страгающих jdbc и считающих себя гуру в SQL и хинтах оптимизации запросов оракль.

Dremmm
>>д) там где действительно "тяжело" - можно написать несколько native sql или stored procedures
К этому и пришли, т.к. при разработки ПО все не просчитаеш, даже "чтение мыслей заказчика" не поможет, а stored procedures являются "более стабильным интерфейсов" между разработчиками.
В итоге Hibernate используется только как Connect к БД, Hibernate must die!

Такой hibernate, действительно, должен must die. Имел дело с такой жутью :)

А stored procedures - зло.
Т.к. это всегда
- привязка к диалекту конкретной бд
- процедурный код
- вынесение логики из приложения, а часто и её дублирование (т.к. наверняка будет "обычный" код, работающий с теми же ассоциациями)
- усложнение процесса внесения изменнений в, тестирования и деплоя приложения
- повышение требований к рядовому разработчику (знание языка процедур, особенностей конкретной бд, инструментов для неё и т.д. и т.п), либо усложнение орг.структуры.

И, главное, ООП в таком окружении идёт лесом. А я его люблю, вместе со статической типизацией на каждом углу :)

Dremmm
Если есть готовая БД и к ней нужно написать новый интерфейс, тогда Hibernate может и прокатит....
Согласен. С места в карьер переписывать существующее решение под hibernate может оказаться тяжело. Поэтому нужно сначала разобраться в том, что он из себя предсталяет, построить стратегический план рефакторинга и ещё раз подумать о трудозатратах :)

Смысла не использовать хибернейт в новых проектах не вижу. Разве только сразу брать ejb3.

Dremmm
>>туча строк повторяющегося кода с созданием Statement-ов
туча строк повторяющегося кода с созданием критерий.

При использовании хибернейт, если замапить все ассоциации по человечески, большинство sql превращаются в простые вызовы методов get, что существенно уменьшает потребность в создании критерий.
В конце концов, ни для кого не секрет как избавляться от дублирования :)


Timmm
б) легко решается надстройкой над ждбц. удобно, практично. ждбц в явном виде использовать вообще некошерно.

Вот как раз в той самой книжке, в самом её начале, рассказывается о процессе эволюции "надстроек над jdbc" в ORM инструменте и о хибернейт, как о качественном ORM, который экономит кучу часов разработчика на написание собственных поделок.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33979281
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ora-JuniorВот у нас работа так сделана:
когда увидели,что hibernare генерит откровенную херню при соединениями таблиц,то сделали так.
Сложные запросы стали прятать в представлениях - а Java-объекты уже мапятся на них. Т.е один фиг запросы ручками писали.Вот и вся хваленая инкапсуляция HIBERNATE.
на что он способен - это на простейший маппинг

А lazy ассоциации в маппингах и индексы в бд не пробовали делать ?
...
Рейтинг: 0 / 0
Hibernate must die!
    #33979319
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs Timm
б) легко решается надстройкой над ждбц. удобно, практично. ждбц в явном виде использовать вообще некошерно.

Вот как раз в той самой книжке, в самом её начале, рассказывается о процессе эволюции "надстроек над jdbc" в ORM инструменте и о хибернейт, как о качественном ORM, который экономит кучу часов разработчика на написание собственных поделок.
Может быть. Только я не имел ввиду переход JDBC->ORM. Маленькая надстройка, для удобства.
NotGonnaGetUsА stored procedures - зло.
Есть задачи которые при решении через хибернейт будут проигрывать ХП разы в скорости. Естественно те которые предполагают доступ к большому количеству объектов.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33979758
Dremmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NotGonnaGetUs Ora-JuniorВот у нас работа так сделана:
когда увидели,что hibernare генерит откровенную херню при соединениями таблиц,то сделали так.
Сложные запросы стали прятать в представлениях - а Java-объекты уже мапятся на них. Т.е один фиг запросы ручками писали.Вот и вся хваленая инкапсуляция HIBERNATE.
на что он способен - это на простейший маппинг

А lazy ассоциации в маппингах и индексы в бд не пробовали делать ?
Пробавали, если true жуткие тормоза, если false закрытые\открытые курсоры
...
Рейтинг: 0 / 0
Hibernate must die!
    #33979853
Dremmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to:NotGonnaGetUs

>>Имхо, лучше иметь 7 человек, которые пишут ООП (!) код и не вникают глубоко
Кто-то из великих сказал:
1. "Если вы умеете писать ООП, это не значит что его нужно везде использовать"
2. "Человеку освоевшему молоток, все вещи кажутся гвоздем"

>>А stored procedures - зло.
>>Т.к. это всегда
>>- привязка к диалекту конкретной бд
Использование ПРЕИМУЩЕСТВ конкретной бд

>>- процедурный код
думаем над словави "великих"

>>- вынесение логики из приложения, а часто и её дублирование (т.к. наверняка будет "обычный" код, работающий с теми же ассоциациями)
логика на SQL работает в 100-10000 раз быстрее

>>- усложнение процесса внесения изменнений в, тестирования и деплоя приложения
а чем деплой усложняется?

>>- повышение требований к рядовому разработчику (знание языка процедур, особенностей конкретной бд, инструментов для неё и т.д. и т.п), либо усложнение орг.структуры.
Каждый должеyн заниматся СВОИМ делом, один человек и не должен знать все методы каждой формы GUI, и все таблицы, отношения и индексы в БД.
Одни пишут БД, и вьюхи, другие рисуют GUI к ним.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33980364
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timm NotGonnaGetUsА stored procedures - зло.
Есть задачи которые при решении через хибернейт будут проигрывать ХП разы в скорости. Естественно те которые предполагают доступ к большому количеству объектов.

Проекты, где > 50% sql предполагают доступ к большому количеству объектов - нонсенс (не смотря на то, что они могут существовать).

В остальных случаях hibernate, как МИНИМУМ экономит время на писание и последую поддержку "простого sql", что само по себе оправдывает его использование.

Про скорость... Могу констатировать факт, что join'ы 6 табличек, количество строк в которых доходит до 20.000.000 (oracle), вполне себе шустро выполняются, когда заданы ясные критерии в запросе.

В случае, если каждый запрос превращается в многоэтажный sql, имхо стоит подумать над тем, что за дурак рожал схему.

Dremmm
Кто-то из великих сказал:
1. "Если вы умеете писать ООП, это не значит что его нужно везде использовать"
2. "Человеку освоевшему молоток, все вещи кажутся гвоздем"

1.
Однако, в той области где применяется java в 90% случаев ООП не только можно, но и нужно использовать. Иначе язык просто не верно выбран и говорить о плезности/вредности "хибернейт" просто глупо.

Если в приложении есть бизнес логика, если эта логика не статична из-за "особых" условий, то адаптировать ОО приложение к изменениям в пожеланиях заказчика существенно проще, чем менять схему БД и переписывать процедуры.

У Мейера, есть замечательные слова о необходимости "бесшовной" разарботки ПО, когда переход от одного уровня абстракции к другому не приводит к смене используемой парадигмы: язык описания абстракций должен сохраняться.

2.
Не зависимо от того, что существуют области, где можно обойтись без ООП, не имеет абсолютно НИКАКОГО смысла, превращать уместное ООП решение в скопище процедурного кода.

Dremmm
>>- привязка к диалекту конкретной бд
Использование ПРЕИМУЩЕСТВ конкретной бд

НЕ НУЖНЫ эти преимущества при написании 90% кода. В оставшихся 10% сколько угодно - этого никто не запрещает, эта даже необходимо.

Просто бессмысленно из-за этих 10% отказываться от общего упрощения процесса разработки.

Dremmm
>>- процедурный код
думаем над словави "великих"

Подумали. Идёт в топку процедурный код.

Dremmm
>>- вынесение логики из приложения, а часто и её дублирование (т.к. наверняка будет "обычный" код, работающий с теми же ассоциациями)
логика на SQL работает в 100-10000 раз быстрее

А также пишется и поддреживается в 100-10000 раз медленее.

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

Аналогия между asm vs c и sql vs orm очень уместна. Подождём какое-то время и возникнет конфликт "c vs c++" и "orm vs объектные бд" :)

Из-за того, что имеются уникальные условия, где использование sql может быть оправдано (вместе с дублированием кода и прочими прелестями), не значит, что в остальных случаях нужно также точно злоупотреблять вышеобозначенными антипаттернами.

Dremmm
>>- усложнение процесса внесения изменнений в, тестирования и деплоя приложения
а чем деплой усложняется?

Имелся ввиду деплой, который выполняет разработчик, чтобы лицезреть результаты своего труда. Если несколько человек "висят" на одной db, то есть вероятность рассинхранизации кода обрабатывающего результаты сторед процедур и самих процедур. Безусловно это не фатальная проблема, но её отсутсвие только плюс.

Dremmm
>>- повышение требований к рядовому разработчику (знание языка процедур, особенностей конкретной бд, инструментов для неё и т.д. и т.п), либо усложнение орг.структуры.

Каждый должеyн заниматся СВОИМ делом, один человек и не должен знать все методы каждой формы GUI, и все таблицы, отношения и индексы в БД.
Одни пишут БД, и вьюхи, другие рисуют GUI к ним.

А третьи пишут бизнес логику, четвёртые пытаюстся заставить первых трёх понимать нужды друг друга? :)

Это и называется усложнение орг.структуры.

Как в неткракере, н-р, когда пожелание от тех кто пишет GUI, до тех кто добавляет метод из двух строчек в ядро, может идти полгода.

Где-то такой подход оправдан, где-то нет. Оправдан главным образом там, где больше важна ГАРАНТИЯ результата, чем СКОРОСТЬ его получения. Т.е. очень крупные проекты, в очень крупных софтварных компаниях, когда риски связанные разработкой значительны.

И опять таки, это не повод выкидывать во всех остальных случаях orm инструменты и струячить код напрямую в бд.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33980554
Ora-Junior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NotGonnaGetUs
...
В случае, если каждый запрос превращается в многоэтажный sql, имхо стоит подумать над тем, что за дурак рожал схему.
....


Давайте еще будем ломать модели БД для того ,что HIBERNATE мог быстро работать:-)) Главное упростить разработку на HIBERNATE, остальное можно усложнить:-)))))
...
Рейтинг: 0 / 0
Hibernate must die!
    #33980662
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ты не задумывался о том, что те, кто высказывает свое мнение в пользу Hibernate имеют тоже немалый опыт разработки? И если приводится список преимуществ, то это не значит, что для получения еще одного нужно идти в крайности. К чему такие выпадки? Иногда приходится идти на какой-то компромис или изменением схемы БД или наоборот, усложнением маппинга и объектной модели. Никто не мешает найти свой способ, который удовлетворит твои амбиции. Просто тема превращается в уговаривание "Hibernate не должен умереть, потому что тебе так хочется".
...
Рейтинг: 0 / 0
Hibernate must die!
    #33981240
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ora-Junior NotGonnaGetUs
...
В случае, если каждый запрос превращается в многоэтажный sql, имхо стоит подумать над тем, что за дурак рожал схему.
....


Давайте еще будем ломать модели БД для того ,что HIBERNATE мог быстро работать:-)) Главное упростить разработку на HIBERNATE, остальное можно усложнить:-)))))

Друх, идиотская схема в бд - идиотская не зависимо от того, используется хибернейт или нет.

Могу привести пример.

В базе данных хранится набор "задачек". Задачка это описывается набором простых вопросов (мальтиплчойс, string/number field) и ответами на них.

Для это в базе были сделаны (примерно, точно уже не помню):
1. Табличка для Задачек ( Activitiy {ActivityId, Title, ChapterId}).
2. Табличка для списка вопросов ( ActivityParts {PartId, ActivityId, ...}).
3. Табличка для самих вопросов ( ActivityCell {CellId, PartId, ...})
4. Табличка c ответами ( ActivityAnswer {AnswerId, CellId, ...})
5. + Почти аналогичная структура для хранения ответов на задачки.

Безусловно, в такой БД каждое обращение к задачке вызывает многоэтажные sql. Как следствие, для УСКОРЕНИЯ работы написали views и stored procedures, которые через эти view пытаются выбрать необходимую информацию.

Очень близкое вашим идеям решение.

А имеем на практике?
- Пара sql запросов игнорируя views' + обработчик на стороне java приводит к коду работают раза в 3-4 раза быстрее той же процедуры.
- 4 таблички могут быть успешно заменены одной, где каждая задачка описывается простым xml-файлом, что даёт просто бесконечную по сравнению со старым решением гибкость в создании разнообразных типов задач + исчезают все многоэтажные sql конструкции.

Т.е. вместо изучения "тонкостей и преемуществ" конкретной бд, время можно потратить на реализацию требований заказчика.
...
Рейтинг: 0 / 0
Hibernate must die!
    #33990810
Vadya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs...
Т.е. вместо изучения "тонкостей и преемуществ" конкретной бд, время можно потратить на реализацию требований заказчика.
Заказчик наверное будет в восторге от качественно написаной системы,чем от "быстрой" разработки,где каждый клик "подвисывает" базу
...
Рейтинг: 0 / 0
Hibernate must die!
    #33990975
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadya NotGonnaGetUs...
Т.е. вместо изучения "тонкостей и преемуществ" конкретной бд, время можно потратить на реализацию требований заказчика.
Заказчик наверное будет в восторге от качественно написаной системы,чем от "быстрой" разработки,где каждый клик "подвисывает" базу

И к чему вы это?

Хочется поговорить о счастье заказчика?
Так его в восторг приведёт не качественная система, а быстро написанная и удовлетворяющая всем его требованиям (включая производительность)...
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate must die!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]