Зачем нам нужен объект реляционного картографа? - PullRequest
2 голосов
/ 20 декабря 2010

Я купил книгу о Hibernate.Я хотел узнать, что такое Hibernate и что такое Object Relational Mapping.

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

Книга ясно объясняет Hibernate, но я думаю, что я в растерянности, потому что она не обсуждает, почему мынужен Hibernate и ORM.

Ответы [ 6 ]

2 голосов
/ 20 декабря 2010

Я бы тоже предложил начать с википедии .

Оттуда перейдите по ссылкам внизу.

Чтобы дать краткий ответ: ORM используется для абстрагирования от хранилища данных, обычно базы данных. Это может служить нескольким целям, среди которых:

  • Прикладные программисты могут добавлять и поддерживать функциональность программное обеспечение без глубоких знаний базы данных (вы можете написать свой код на Java, а не на SQL).
  • Это устраняет ловушки наличия собрать ваши операторы SQL как строки и, следовательно, устраняет огромный источник ошибок.
  • Оптимизация базы данных является независимой из бизнес логики. Это обеспечивает лучшая ремонтопригодность. оптимизация может быть выполнена ORM (через файлы конфигурации) или непосредственно в базе данных (вручную добавление индексных таблиц и / или запросов кэша). Оба не пройдут в фактический программный код.
  • Поставщики данных могут быть легче обменены, потому что ОРМ обычно предлагает драйверы для нескольких базы данных, так что то же самое функциональная логика будет работать с разные продукты и поставщики.
1 голос
/ 20 декабря 2010

По своей сути речь идет о Разделение проблем .

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

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

В действительности в больших системах вы редко можете быть полностью независимыми от поставщика, а уровень DAO неизбежно обнаруживает некоторыене связанные с ORM запросы для настройки производительности.Такие инструменты, как Hibernate, делают все возможное, чтобы сделать эти ситуации как можно более редкими и абстрактными.

0 голосов
/ 20 декабря 2010
0 голосов
/ 20 декабря 2010

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

0 голосов
/ 20 декабря 2010

Википедия: реляционное сопоставление объектов ? :)

Точнее говоря, ORM позволяет вам использовать Объекты, напрямую связанные с вашей Базой данных.

Например, у меня есть Автомобиль, у которого есть 4 объекта Двери, у каждой Двери есть Цвет, у каждого Цвет Имя.

С помощью ORM я получаю объект Car из базы данных. Затем я выбираю Car.GetDoors () и получаю коллекцию дверей, и для каждой из них я могу использовать Door.GetColor (). GetColorName ().

Это означает, что я не удосужился написать SQL-запросы, чтобы получить Двери из Таблицы дверей с CarID или получить ColorName из таблицы Цветов с colorID. Таким образом, ORM позволяет мне писать меньше кода:)

0 голосов
/ 20 декабря 2010

Использование ORM наподобие (N) Hibernate просто гарантирует, что вам не нужно сильно беспокоиться о написании SQL-запросов, это помогает вам сосредоточиться на «домене» (бизнес-логике).

Тем не менее, необходимо иметь некоторое представление о базовой БД (и sql), чтобы иметь возможность создавать эффективные приложения. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...