Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > hibrnate


Автор: katala 15.5.2006, 18:52
народ расскажите мне плиз какие преимущества и какие недостатки у технологии hibernate по сравнению с обычной работой с базами данных???? заранее огромное спасибо за ответ  

Автор: Tony 16.5.2006, 15:54
Так себе.чтобы исползовать в ком. проектах нужно знать от а-я.  smile  

Автор: ALKS 16.5.2006, 16:22
достоинство основное в абстрогировании от специфики SQL cинтаксиса конкретного SQL сервера. есть естественно у другие приимущества но они вторичны.

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

недостаток второй произтекает из основного достоинства: ну во первых это не так быстро как доступ к базе напрямую (и даже пусть реч идет о милисекундах, но эти милисекунды вы теряете) ну и во-вторых, часто используя всякие труки предоставляемые специвическим синтаксисом конкретного SQL сервера можно добиться заметного эфекта, а тут вас в этом ограничивают...

мое имхо - если вам не нужна поддержка мульти-баз, то и не надо вам оно. а если нужна - жизнь спасёт. smile 

Автор: tux 16.5.2006, 16:56
Еще два достоинства: 
  • на простых операциях с данными (insert, update, delete, простые selectы) может сильно сократить объем кода за счет того, что Hibernate сам генерирует запросы. Хотя у большинства опытных программеров уже есть какие-то свои реализованные паттерны, которые может быть и оптимальнее, чем hibernate, но для начинающего это важно
  • программер работает с привычными классами, атрибутами и т.п. Хотя как только приложение выйдет за уровень Hello, world, придется познакомится и с базами данных и с таблицами. smile Но во многих случаях работа с классами снизит вероятность ошибки
Цитата(ALKS @  16.5.2006,  21:22 Найти цитируемый пост)
часто используя всякие труки предоставляемые специвическим синтаксисом конкретного SQL сервера можно добиться заметного эфекта, а тут вас в этом ограничивают...

Это конечно, но ничто не мешает использовать hibernate и plain sql одновременно. В Hibernate даже есть специальный механизм для поддержки родных диалектов - native SQL queries. 

О недостатках уже сказали. Вообще главное (впрочем, как и для любого другого программного продукта) - разумное использование. Тогда Hibernate подойдет практически для любого проекта. Единственное, чего точно нельзя добиться - повышения производительности. smile 

Автор: ALKS 16.5.2006, 17:25
ну насчет сокращения объема кода.... smile смело можете добавлять размер кода самого  hibernate который становиться частью вашего приложения. и размер конфигов - до кучи. smile 

насчет привычных классов и атрибутов... вот я например вырос как программер из приложения для баз данных. для меня оперировать языком структурированых запросов при работе с реляционными БД до сих пор кажется намного более естественным, чем классами и объектами... но. я согласен что если разработчик в Базах не рубит, то лучше ему прямой SQL в руки не давать. это как гранатомет пятикантропу....

plain sql это конечно да, но это костыль - чтоб лазейка была когда по другому - ну ни как. smile

кстати повышение произвотильности нельзя добиться по сравнению с качественных прямым кодом. а вот если код кривой - то как раз можно. всеж таки то что hibernate умеет он умеет хорошо и правильно. smile гораздо лучше и правельнее кривых рук. 

Автор: jimur 16.5.2006, 17:37
для меня основные недостатки:
- непрозрачность
- влияние на модель

преимущества названы выше

альтернатива для проектов, где одна база - Spring + чистый SQL 

Автор: katala 16.5.2006, 17:49
всем большое спасибо за помощь!!!! еще одна просьба: может кто подкинет ссылочки где материал можно взять про hibernate
(одна уже есть www.hibernate.org) и про java где описывается именно работа с базами(как с использованием хибера так и обычный способ). а то мне курсовую надо писать разбирался  то на английском но теперь красиво перевести не смогу.(знания английского не позволяют smile не тот уровень) может кто даст какой нибудь материал или ссылки по этим  материалам. буду очень благодарен!!!! 

Автор: jimur 16.5.2006, 18:00
поищи тут:
www.javable.com 

Автор: ALKS 16.5.2006, 18:17
Цитата(jimur @ 16.5.2006,  17:37)
альтернатива для проектов, где одна база - Spring + чистый SQL

для меня приимущество Spring в данном случае не очень очевидны. стандартного класса-костыля для java.sql который содержит обертки для объектных типов и всякие мелочи типа универсального метода close() smile размером в 200 строк и становиться самым самым предком вообщем-то хвататет... и никакой рефлексии smile 

Автор: jimur 16.5.2006, 18:36
Цитата(ALKS @  16.5.2006,  18:17 Найти цитируемый пост)
для меня приимущество Spring в данном случае не очень очевидны. стандартного класса-костыля для java.sql который содержит обертки для объектных типов и всякие мелочи типа универсального метода close() smile размером в 200 строк и становиться самым самым предком вообщем-то хвататет... и никакой рефлексии smile  

это вопрос личных предпочтений smile
не люблю костылей в своем коде, люблю писать мало простого кода...
рефлекшн кстати там тольно на стадии инициализации используется, что есть мизер smile
 

Автор: ALKS 16.5.2006, 19:48
свой самодельный костыль или костыль фирмы Spring? smile 
разницы по сути - никакой. 

Автор: jimur 16.5.2006, 20:39
Цитата(ALKS @  16.5.2006,  19:48 Найти цитируемый пост)
разницы по сути - никакой.  

почти...
только чем больше используется код, тем меньше вероятность ошибки в нем 

Автор: ALKS 16.5.2006, 20:49
Цитата(jimur @ 16.5.2006,  20:39)
Цитата(ALKS @  16.5.2006,  19:48 Найти цитируемый пост)
разницы по сути - никакой.  

почти...
только чем больше используется код, тем меньше вероятность ошибки в нем

скажи это Microsoft smile

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

Автор: jimur 16.5.2006, 20:55
Цитата(ALKS @  16.5.2006,  20:49 Найти цитируемый пост)

скажи это Microsoft smile

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


да, согласен, есть нюанс - прозрачность кода (открытость + !навороченность)
IoC + удобные врапперы спринга _много_ крови экономят smile  

Автор: Tony 17.5.2006, 09:30
Цитата(ALKS @ 16.5.2006,  20:49)
Цитата(jimur @ 16.5.2006,  20:39)
Цитата(ALKS @  16.5.2006,  19:48 Найти цитируемый пост)
разницы по сути - никакой.  

почти...
только чем больше используется код, тем меньше вероятность ошибки в нем

скажи это Microsoft smile

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

Ты не одинок  smile .Часто бивает, что в исползуемом продукте bug.А новый релиз через 6 мес.  

Автор: ALKS 17.5.2006, 11:50
Угу... это если этот новый релиз будет вообще. Я попал однажды в ситуацию, когда нам предложили поцеловать фреймворк torque строго в то самое место... smile  

Автор: pvo 18.5.2006, 00:00
Цитата(ALKS @  17.5.2006,  11:50 Найти цитируемый пост)
Я попал однажды в ситуацию, когда нам предложили поцеловать фреймворк torque строго в то самое место


А что с ним? Почах? 

Автор: ALKS 18.5.2006, 10:11
мы попали строго в момент между  версией 3.1 и  3.1.1 проект был мёртв 100%. никаких изменений практически никакго комъюнити никакой возможности достучаться до разработчиков.(мы нашли баги и пытались достучаться) потом  torque как-то реанимировали, незнаю как - к тому времени я уже покинул тот проект... ощущение было очень мало приятное, признаться. народ уже поговаривал, тоскливо, о необходимости перехода на то самое что мы тут изначально обсуждаем. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)