|
|
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Hibernate позволяет быстро написать плохой код:-( вот собственно и все. Он пригоден только для простых вещей, те запросы,которые он генерит,на промышленных объемах уже не срабатывают,как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2006, 16:31 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Java - devHibernate позволяет быстро написать плохой код:-( вот собственно и все. Он пригоден только для простых вещей, те запросы,которые он генерит,на промышленных объемах уже не срабатывают,как надо. Гонишь. Хибернейт не избавляет от необходимости знания SQL и представления о том, что происходит при попытке вытащить дерево объектов. Нужно а) пользоваться кешем второго уровня. б) писать критерии, которые позволяют вытащить из базы только те данные, что действительно нужны. в) для массовых операций (update, н-р) использовать соответствующий аналог hql. д) там где действительно "тяжело" - можно написать несколько native sql или stored procedures ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2006, 16:42 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
когда мне было 3 года, я не понимал для чего же люди используют унитазы. ведь ими очень и очень неудобно пользоваться... туда ж совершенно невозможно попасть и все льется мимо!!! сейчас я немного вырос и, вспоминая те дни, улыбаюсь. унитазы намного лучше горшков!! PS извините за подробности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2006, 16:54 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Java - devHibernate позволяет быстро написать плохой код:-( вот собственно и все. Он пригоден только для простых вещей, те запросы,которые он генерит,на промышленных объемах уже не срабатывают,как надо.Пеши промышленное приложение на dbf и Clippere, а лучше на Delphi BDS 2006. Об успехах расскажешь в теме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2006, 23:17 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Java - devHibernate позволяет быстро написать плохой код:-( вот собственно и все. Он пригоден только для простых вещей, те запросы,которые он генерит,на промышленных объемах уже не срабатывают,как надо.Кстати, ты в курсе? "Архитектуру промышленных приложений" Фаулера переведенную на русский, уже даже отсканировали и ввыложили в сеть. специально для тех, кто не может асилить английский ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2006, 23:18 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
javarulezКстати, ты в курсе? "Архитектуру промышленных приложений" Фаулера переведенную на русский, уже даже отсканировали и ввыложили в сеть. специально для тех, кто не может асилить английский Правда что-ли? А как её найти, не подскажешь? Давно отсканированную и выложенную в сеть? Которая называется "Архитектура корпоративных программных приложений", к слову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2006, 23:41 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
javarulezКстати, ты в курсе? "Архитектуру промышленных приложений" Фаулера переведенную на русский, уже даже отсканировали и ввыложили в сеть. специально для тех, кто не может асилить английский Я бы тоже почитал =D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2006, 08:06 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
он же javarulezКстати, ты в курсе? "Архитектуру промышленных приложений" Фаулера переведенную на русский, уже даже отсканировали и ввыложили в сеть. специально для тех, кто не может асилить английский Правда что-ли? А как её найти, не подскажешь? Ты понимаешь какая штука! На русском еще можно читать разве что Кнута, которого перевели какчественно, и давно, грамотные перевотчеки и термины он использует больше математические. Читать же Фаулера надо в подленнике, иначе в голове останется только каша из непонятных "паттернов дезайна" вместо "шаблонов проектирования" Впрочем, вот http://c-books.info/books/news5php/2006/09/07/arxitektura-korporativnyx-programmnyx-prilozhenii.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2006, 12:05 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
@вторЧитать же Фаулера надо в подленнике, иначе в голове останется только каша из непонятных "паттернов дезайна" вместо "шаблонов проектирования" Имея перед мордой лица подлинник Хорстманна/Корнела и его переведенную версию - не могу не согласиться, что читать лучше в подлиннике. Это если только знания английского на уровне выше среднего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2006, 18:07 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
он же @вторЧитать же Фаулера надо в подленнике, иначе в голове останется только каша из непонятных "паттернов дезайна" вместо "шаблонов проектирования" Имея перед мордой лица подлинник Хорстманна/Корнела и его переведенную версию - не могу не согласиться, что читать лучше в подлиннике. Это если только знания английского на уровне выше среднего.А я еще хотел купить оба тома русского издания. Теперь точно не куплю. Ты понимаешь, зная только русский со словарем, можно программить на 1С, на Форте, на Фокале, на ДВК-бейсике каконтамбишьназывался. Но программировать на Java не зная английского все равно делать хирургическую операцию не зная анатомии. Ты ляжешь под нож такому херургу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2006, 21:26 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
@вторНо программировать на Java , не зная английского , это все равно , что делать хирургическую операцию , не зная анатомии. Ты ляжешь под нож такому х И рургу? Можно ли программировать вообще, не зная русского языка даже в объеме пяти классов ЦПШ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2006, 18:43 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
grexhide @вторНо программировать на Java , не зная английского , это все равно , что делать хирургическую операцию , не зная анатомии. Ты ляжешь под нож такому х И рургу? Можно ли программировать вообще, не зная русского языка даже в объеме пяти классов ЦПШ ? [offtopic] Ну, сторго говоря, в данном контексте (хирург, не знающий анатомии) можно сказать и "ХЕРург".[/offtopic] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2006, 20:21 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
grexhide @вторНо программировать на Java , не зная английского , это все равно , что делать хирургическую операцию , не зная анатомии. Ты ляжешь под нож такому х И рургу? Можно ли программировать вообще, не зная русского языка даже в объеме пяти классов ЦПШ ?Штобы программировать на джаве, не обязательно уметь хорошо песать по русски. Достаточно хорошо уметь читать по-английски, ну, и немного, по-русски ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2006, 21:17 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
@втор grexhide @вторНо программировать на Java , не зная английского , это все равно , что делать хирургическую операцию , не зная анатомии. Ты ляжешь под нож такому х И рургу? Можно ли программировать вообще, не зная русского языка даже в объеме пяти классов ЦПШ ?Штобы программировать на джаве, не обязательно уметь хорошо песать по русски. Достаточно хорошо уметь читать по-английски, ну, и немного, по-русски "Чукча аднака не песатель , чукча - по-английски двава-читатель, программист, кароче" (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2006, 21:47 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
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 может и прокатит.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 09:28 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
а) НЕ БРЕД, потому что Например, используем в приложении безопасность, встроенную в приложение. Каждый запрос будь то к странице, либо к методам, охваченным безопасностью, предполагает (1) аутентификацию и (2) авторизацию. Кеширование таких редко изменяемых объектов, какими могут (не всегда конечно) являться пользователи системы, скажем, в течение 5 минут, избавляет от накладных расходов на выполнение запроса к БД при каждом обращении к ресурсу. Это простейший пример, с которым столкнулся, и думаю, отнюдь не единственный. б) Хотел бы посмотреть на то, насколько выростет количество "простых" методов чтения необходимых данных из БД. Почему простых в кавычках - да потому что это туча строк повторяющегося кода с созданием Statement-ов, и прохода по ResultSet-ам. Причем, половина программеров все время забывает закрывать эти ресурсы при выходе из метода. Конечно, всегда можно на SQL сделать что-то оптимальнее для одной БД. в) хранимые процедуры подходят больше именно для кода, написанного с использованием JDBC, и для одной, ну может быть, двух БД. Остальные БД остаются не у дел. А если нужен массовый продукт? Почитай "Hibernate in Action" еще разок. А то приходит на ум "Some programmers must die". Будут еще претензии - с радостью выскажу свое мнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 09:52 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Кстати, использовал в приложении с 22 таблицами БД. Не большой проект, но сказать, что маленький тоже вроде язык не поворачивается. Может, потому что писала ну очень небольшая группа людей и пришлось пройти через все стадии процесса и заниматься всеми аспектами и проблемами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 09:56 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
в) хранимые процедуры подходят больше именно для кода, написанного с использованием JDBC, и для одной, ну может быть, двух БД. Остальные БД остаются не у дел. А если нужен массовый продукт? Кстати, использовал в приложении с 22 таблицами БД. Не большой проект, но сказать, что маленький тоже вроде язык не поворачивается. Может, потому что писала ну очень небольшая группа людей и пришлось пройти через все стадии процесса и заниматься всеми аспектами и проблемами. Если проверять права доступа для каждого метода, тогда кэшировать is good, но не совсем понят как решать проблемы с многопользовательским доступом? >>туча строк повторяющегося кода с созданием Statement-ов туча строк повторяющегося кода с созданием критерий. Массовый продукт = любая БД? т.е. НЕ использовать преимущества конкретной БД, зато и на Oracle и на Accese пойдет без изменения кода... От Hibernate ждали ускорение разработки, при меняющейся БД, прицедуры==запросы, удобнее. >>Кстати, использовал в приложении с 22 таблицами БД. Не большой проект, но >>сказать, что маленький тоже вроде язык не поворачивается. Может, потому >>что писала ну очень небольшая группа людей и пришлось пройти через все >>стадии процесса и заниматься всеми аспектами и проблемами. И на "5 таблиц" можно сотню форм своять, большой проект != много таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 10:25 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
2 первых абзаца лишнии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 10:28 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
BlackWall б) Хотел бы посмотреть на то, насколько выростет количество "простых" методов чтения необходимых данных из БД. Почему простых в кавычках - да потому что это туча строк повторяющегося кода с созданием Statement-ов, и прохода по ResultSet-ам. Причем, половина программеров все время забывает закрывать эти ресурсы при выходе из метода. Конечно, всегда можно на SQL сделать что-то оптимальнее для одной БД. в) хранимые процедуры подходят больше именно для кода, написанного с использованием JDBC, и для одной, ну может быть, двух БД. Остальные БД остаются не у дел. А если нужен массовый продукт? Почитай "Hibernate in Action" еще разок. А то приходит на ум "Some programmers must die". Будут еще претензии - с радостью выскажу свое мнение. б) легко решается надстройкой над ждбц. удобно, практично. ждбц в явном виде использовать вообще некошерно. в) хотел чето написать. забил. "массовый" это утопия. Книжка дурная какая то. Пытался почетать - убожество, сильно не понравилась (уже не помню что конкретно). Дока рулез. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 10:48 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
А как себя ведет HIBERNATE на промышленных объемах данных ,когда строк в таблице больше 10 000 000? Оптимально ли генерирует запросы? Понятное дело,если в базки таблицы с кол-вом записей 500 000, то любые запросы можно пулять - она съест. И чем настройка критериев HIBERNATE облегачает жизнь,чем написание SQL. То есть использую HIBERNATE, кроме самого SQL, надо знать еще,как настраивать сам HIBERNATE - где ж здесь облегчение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 15:25 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Ora-Junior... Оптимально ли генерирует запросы? Смотря как попросишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 15:27 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Timm Ora-Junior... Оптимально ли генерирует запросы? Смотря как попросишь. То есть мне надо ,знать как извратить HIBERNATE,что бы выдать заранее определенный оптимальный запрос? Запрос известен, мне вместо того,что бы его написать - надо еще извратится настроить HIBERNATE таким образом,что бы он его сгенерил. Получается лишний посредник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 17:25 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Ora-Junior Timm Ora-Junior... Оптимально ли генерирует запросы? Смотря как попросишь. То есть мне надо ,знать как извратить HIBERNATE,что бы выдать заранее определенный оптимальный запрос? Запрос известен, мне вместо того,что бы его написать - надо еще извратится настроить HIBERNATE таким образом,что бы он его сгенерил. Получается лишний посредник. Вот блин. Зависит чаще всего от кривости рук. Впрочем, как всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 17:43 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
:) Hibernate must die! SQL rulez ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 18:11 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Ora-JuniorТо есть мне надо ,знать как извратить HIBERNATE,что бы выдать заранее определенный оптимальный запрос? Запрос известен, мне вместо того,что бы его написать - надо еще извратится настроить HIBERNATE таким образом,что бы он его сгенерил. Получается лишний посредник. Знакомо ли товаварисчу понятие плана запроса? Хинты Oracla и т.д.? Все выше сказанные аргументы говорят о том что чел который задает не понимает работу технологии, если брать допотопный паскаль то file of record будет читать гораздо быстрее любой RDBMS, но им почему то не пользуются :-) Интересно ктонибуть назовет жизненный Use case где требуется выборки и обработка 500 000 записей? Я нет. Плюс технологий не то что они какюто операцию позволяют делать быстрее а что в целом комплексе отказываясь от некоторых операций и заменяя одни на другие в целом получается выигрыш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 18:54 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
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 строк? "Не верю!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 19:37 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
@втор 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 иногда такие запросы генерит(особенно где идет объединение нескольких таблиц),что база падает и зависает. С простейшими запросами то понятное дело,что все нормально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 20:13 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Вот у нас работа так сделана: когда увидели,что hibernare генерит откровенную херню при соединениями таблиц,то сделали так. Сложные запросы стали прятать в представлениях - а Java-объекты уже мапятся на них. Т.е один фиг запросы ручками писали.Вот и вся хваленая инкапсуляция HIBERNATE. на что он способен - это на простейший маппинг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 20:23 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
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. Конечно, это можно обойти, но только через постоянные кодоревью и жесткие предписания "как делать не надо". 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, который экономит кучу часов разработчика на написание собственных поделок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 21:01 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Ora-JuniorВот у нас работа так сделана: когда увидели,что hibernare генерит откровенную херню при соединениями таблиц,то сделали так. Сложные запросы стали прятать в представлениях - а Java-объекты уже мапятся на них. Т.е один фиг запросы ручками писали.Вот и вся хваленая инкапсуляция HIBERNATE. на что он способен - это на простейший маппинг А lazy ассоциации в маппингах и индексы в бд не пробовали делать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 21:04 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Timm б) легко решается надстройкой над ждбц. удобно, практично. ждбц в явном виде использовать вообще некошерно. Вот как раз в той самой книжке, в самом её начале, рассказывается о процессе эволюции "надстроек над jdbc" в ORM инструменте и о хибернейт, как о качественном ORM, который экономит кучу часов разработчика на написание собственных поделок. Может быть. Только я не имел ввиду переход JDBC->ORM. Маленькая надстройка, для удобства. NotGonnaGetUsА stored procedures - зло. Есть задачи которые при решении через хибернейт будут проигрывать ХП разы в скорости. Естественно те которые предполагают доступ к большому количеству объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 21:41 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Ora-JuniorВот у нас работа так сделана: когда увидели,что hibernare генерит откровенную херню при соединениями таблиц,то сделали так. Сложные запросы стали прятать в представлениях - а Java-объекты уже мапятся на них. Т.е один фиг запросы ручками писали.Вот и вся хваленая инкапсуляция HIBERNATE. на что он способен - это на простейший маппинг А lazy ассоциации в маппингах и индексы в бд не пробовали делать ? Пробавали, если true жуткие тормоза, если false закрытые\открытые курсоры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2006, 09:48 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
to:NotGonnaGetUs >>Имхо, лучше иметь 7 человек, которые пишут ООП (!) код и не вникают глубоко Кто-то из великих сказал: 1. "Если вы умеете писать ООП, это не значит что его нужно везде использовать" 2. "Человеку освоевшему молоток, все вещи кажутся гвоздем" >>А stored procedures - зло. >>Т.к. это всегда >>- привязка к диалекту конкретной бд Использование ПРЕИМУЩЕСТВ конкретной бд >>- процедурный код думаем над словави "великих" >>- вынесение логики из приложения, а часто и её дублирование (т.к. наверняка будет "обычный" код, работающий с теми же ассоциациями) логика на SQL работает в 100-10000 раз быстрее >>- усложнение процесса внесения изменнений в, тестирования и деплоя приложения а чем деплой усложняется? >>- повышение требований к рядовому разработчику (знание языка процедур, особенностей конкретной бд, инструментов для неё и т.д. и т.п), либо усложнение орг.структуры. Каждый должеyн заниматся СВОИМ делом, один человек и не должен знать все методы каждой формы GUI, и все таблицы, отношения и индексы в БД. Одни пишут БД, и вьюхи, другие рисуют GUI к ним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2006, 10:12 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
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 инструменты и струячить код напрямую в бд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2006, 12:06 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs ... В случае, если каждый запрос превращается в многоэтажный sql, имхо стоит подумать над тем, что за дурак рожал схему. .... Давайте еще будем ломать модели БД для того ,что HIBERNATE мог быстро работать:-)) Главное упростить разработку на HIBERNATE, остальное можно усложнить:-))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2006, 12:45 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
А ты не задумывался о том, что те, кто высказывает свое мнение в пользу Hibernate имеют тоже немалый опыт разработки? И если приводится список преимуществ, то это не значит, что для получения еще одного нужно идти в крайности. К чему такие выпадки? Иногда приходится идти на какой-то компромис или изменением схемы БД или наоборот, усложнением маппинга и объектной модели. Никто не мешает найти свой способ, который удовлетворит твои амбиции. Просто тема превращается в уговаривание "Hibernate не должен умереть, потому что тебе так хочется". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2006, 13:06 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
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 конструкции. Т.е. вместо изучения "тонкостей и преемуществ" конкретной бд, время можно потратить на реализацию требований заказчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2006, 15:17 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs... Т.е. вместо изучения "тонкостей и преемуществ" конкретной бд, время можно потратить на реализацию требований заказчика. Заказчик наверное будет в восторге от качественно написаной системы,чем от "быстрой" разработки,где каждый клик "подвисывает" базу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2006, 16:04 |
|
||
|
Hibernate must die!
|
|||
|---|---|---|---|
|
#18+
Vadya NotGonnaGetUs... Т.е. вместо изучения "тонкостей и преемуществ" конкретной бд, время можно потратить на реализацию требований заказчика. Заказчик наверное будет в восторге от качественно написаной системы,чем от "быстрой" разработки,где каждый клик "подвисывает" базу И к чему вы это? Хочется поговорить о счастье заказчика? Так его в восторг приведёт не качественная система, а быстро написанная и удовлетворяющая всем его требованиям (включая производительность)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2006, 16:46 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2148116]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
223ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 521ms |

| 0 / 0 |
