Прежде чем мы действительно сможем начать использовать NHibernate, нам необходимо понять основы, на которых он построен. NHibernate — это технология персистентности, основанная на идее реляционного сопоставления объектов или ORM.
Что такое ORM?
Объектно-реляционное отображение (ORM) — это метод программирования для преобразования данных между несовместимыми системами типов в объектно-ориентированных языках программирования. Другими словами, это концепция сопоставления бизнес-объектов приложения с таблицами реляционной базы данных, так что данные могут быть легко доступны и полностью обновлены через объектную модель приложения.
-
Как вы уже знаете, реляционные базы данных обеспечивают хорошие средства хранения данных, а объектно-ориентированное программирование — хороший подход к созданию сложных приложений.
-
NHibernate и ORM в целом наиболее актуальны для приложений с нетривиальной бизнес-логикой, моделью предметной области и своего рода базой данных.
-
С ORM очень легко создать слой перевода, который может легко преобразовывать объекты в реляционные данные и обратно.
-
Сокращение ORM также может означать моделирование роли объекта, и этот термин был изобретен до того, как сопоставление объекта / реляции стало актуальным.
-
Описывается метод анализа информации, используемый при моделировании базы данных.
Как вы уже знаете, реляционные базы данных обеспечивают хорошие средства хранения данных, а объектно-ориентированное программирование — хороший подход к созданию сложных приложений.
NHibernate и ORM в целом наиболее актуальны для приложений с нетривиальной бизнес-логикой, моделью предметной области и своего рода базой данных.
С ORM очень легко создать слой перевода, который может легко преобразовывать объекты в реляционные данные и обратно.
Сокращение ORM также может означать моделирование роли объекта, и этот термин был изобретен до того, как сопоставление объекта / реляции стало актуальным.
Описывается метод анализа информации, используемый при моделировании базы данных.
Почему ОРМ?
ORM — это структура, которая позволяет отображать мир объектов, найденных в объектно-ориентированных языках, в строки в реляционных таблицах, найденных в реляционных базах данных.
Чтобы понять эту концепцию, давайте взглянем на следующую диаграмму.
На приведенной выше диаграмме вы можете видеть, что у нас есть таблица с именем Employee с правой стороны, которая содержит столбцы с каждым фрагментом данных, связанным с отдельным сотрудником.
У нас есть столбец для идентификатора, который уникально идентифицирует каждого сотрудника.
Столбец для имени сотрудника, еще один столбец для даты их вступления и, наконец, столбец, в котором указан возраст сотрудника.
Если мы хотим написать код для хранения нового сотрудника в таблицах, это не так просто.
На приведенной выше диаграмме вы также можете видеть, что у нас есть объект сотрудника, в котором есть поля для идентификатора, имени, даты присоединения и возраста.
Без ORM мы должны преобразовать этот объект в несколько различных операторов SQL, которые будут вставлять данные о сотрудниках в таблицу сотрудников.
Таким образом, написание кода для создания SQL-кода для выполнения описанного выше сценария не так сложно, но это немного утомительно и легко ошибиться.
Используя ORM, такой как NHibernate, мы можем объявить, как определенные классы должны отображаться в реляционные таблицы, и позволить ORM или NHibernate справиться с сложной задачей создания SQL для вставки, обновления, удаления данных запроса в нашей таблице сотрудников.
Это позволяет нам сосредоточить наш код на использовании объектов и автоматически переводить эти объекты в реляционные таблицы.
Так что на самом деле ORM избавляет нас от необходимости вручную отображать объекты в таблицы.