2015-04-30 6 views
2

Intro
Я - самый новый парень в моей команде разработчиков. В первую очередь мы делаем веб-разработку Java и работаем с базами данных Oracle, но в редких случаях мы работаем с другими RDMS. В интересах расширения моих профессиональных знаний и изучения более современных методологий я решил изучить Hibernate.Должна ли моя команда разработчиков использовать Hibernate?

До сих пор я не уверен, что это хорошо подходит для нашей команды, но я не могу сказать, связано ли это с тем, что Hibernate законно не соответствует нашим потребностям или потому, что мы следуем таким плохим практикам, что Hibernate «не желает» Приходите.

Например, практически все наше взаимодействие с базой данных осуществляется через стандартные JDBC CallableStatements и хранимые процедуры. Мы перебираем ResultSets и помещаем их в beans/pojos для использования веб-приложения. Hibernate, из того, что я могу сказать, вместо этого любит точно моделировать таблицы (@Entity, @Table) и их столбцы. Для простых запросов SELECT это более простой подход. Тем не менее, для разработки работы с БД (думаю, анализируя аналитические данные по необработанным данным) я либо сильно зациклился на манипуляции данными в своем Java-коде (и отказался от сущностных классов, которые в конечном итоге отображали таблицы), либо вызывал хранимые процедуры через уродливый session.doWork , который, кажется, побеждает весь смысл использования Hibernate для начала.

Предположения Я понятия не имею, о: Моя команда сказала мне, что на раннем этапе они думают, что его лучше делать «тяжелую» в базе данных (т.е. хранимой процедуры), а не в приложении сервера (т.е. Java), и я понятия не имею, правильны они или нет. Если они правы, то почему существуют ORM, подобные Hibernate?

Кроме того, у меня есть heard, что Hibernate имеет довольно жесткую кривую обучения, но я чувствую, что мне не хватает цели целиком. Предполагается ли, что таблицы базы данных точно имитируют данные, необходимые в веб-приложении? Является ли наша методология проектирования еще далеко?

Наконец, я знаю, что хранимые процедуры против ORM - это горячая topic, но эта тенденция, похоже, находится на стороне «ORM». Зачем?

Т.Л., др Hibernate появляется только помочь нашей потребительной случай в самых тривиальных случаев, с кучей сложной конфигурации и дополнительных ресурсов в качестве компромисса. Что мне не хватает?

+0

Пожалуйста, прочтите @ http://stackoverflow.com/questions/448684/why-should-you-use-an-orm – Amogh

+2

Hibernate отлично подходит для простых вещей. Для более сложных вещей проблема несоответствия объектно-реляционного импеданса становится проблемой. РСУБД действительно хороши в работе с типами РСУБД. Java-разработчики стремятся к ORM, потому что они разработчики Java, а не разработчики SQL. –

+0

Этот вопрос требует ответа на основе мнений, поэтому я голосую, чтобы закрыть его. Ответ почти полностью зависит от команды. Похоже, у вас в команде есть несколько разработчиков database_programmers ™, что практически гарантирует некоторую враждебность по отношению к новой технологии ORM. Как правило, это, как правило, намного больше проблем людей, чем техническая проблема. – dasblinkenlight

ответ

1

Короче говоря, если вы спрашиваете использование Hibernate в своем проекте, не используйте его. Лучше проектируйте DAO и DTO правильно, так что рутинные операции не потребуют больших усилий для реализации. Кроме того, см. Шаблон Spring JDBC, его функциональность может действительно помочь вам.

P.S. Если ваша команда не знакома с Hibernate, будет очень сложно работать с

+0

Спасибо за подсказку на шаблон Spring JDBC. Я уже использую Spring, и я чувствую, что это будет хорошо вписываться. – WannabeCoder

+0

Но это будет борьба -он. Не знакомство с чем-то - действительно плохая причина, чтобы полностью его избежать, и это идеальная причина для изучения этого. Позвольте мне сказать это по-другому: если вы не знакомы с картофелем-фри, я надеюсь, что вы бог, вы хотя бы понюхаете, и у вас может возникнуть соблазн вкусить тоже. Если вам даже не нравится запах, вы всегда можете есть сырой картофель. – Gimby

+0

Не уверен, что я в настоящее время понял. Я не утверждал, что это причина отказа от использования Hibernate, я только что написал это как примечание (именно поэтому он находится в P.S.). По-видимому, у @WannabeCoder есть больше причин искать альтернативы. – lopushen

0

Я просто поделился своим опытом. Я работаю над проектом с четким разделением между слоями приложений; моя команда работает с кодом на стороне сервера, другая команда работает с базами данных, а другая настраивает и поддерживает контейнеры приложений. В этом сценарии Hibernate (ORM в целом) позволяет нам быть независимым (я знаю, а не полностью) от деталей реализации базы данных.

Другое преимущество, с моей точки зрения (но это зависит от структуры базы данных), является возможностью, и я нашел эту возможность очень полезной для просмотра связей в таблице с использованием шаблонов Java и OO. В этом случае, пожалуйста, учитывайте ленивую загрузку.

Удачи!

Смежные вопросы