Учебники

NHibernate — Обзор

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

Что такое NHibernate?

NHibernate — это зрелый объектно-реляционный картограф с открытым исходным кодом для платформы .NET. Он активно развивается, полнофункциональный и используется в тысячах успешных проектов. Он построен на основе ADO.NET, и текущей версией является NHibernate 4.0.4.

  • NHibernate — это объектно-реляционный картограф с открытым исходным кодом .NET, распространяемый по лицензии GNU Lesser General Public License .

  • Он основан на Hibernate, популярном объектно-реляционном маппере Java, и имеет очень зрелую и активную базу кода.

  • Он обеспечивает основу для сопоставления объектно-ориентированной модели предметной области с традиционной реляционной базой данных.

  • NHibernate был запущен Томом Барреттом, и этот проект существует с февраля 2003 года, что стало их первым обязательством.

  • Это большой проект и предоставляет много функциональности.

  • Доступен пакет NuGet , который позволяет очень легко добавить в проект.

NHibernate — это объектно-реляционный картограф с открытым исходным кодом .NET, распространяемый по лицензии GNU Lesser General Public License .

Он основан на Hibernate, популярном объектно-реляционном маппере Java, и имеет очень зрелую и активную базу кода.

Он обеспечивает основу для сопоставления объектно-ориентированной модели предметной области с традиционной реляционной базой данных.

NHibernate был запущен Томом Барреттом, и этот проект существует с февраля 2003 года, что стало их первым обязательством.

Это большой проект и предоставляет много функциональности.

Доступен пакет NuGet , который позволяет очень легко добавить в проект.

Почему именно NHibernate?

Теперь вопрос: зачем нам объектно-реляционные картографы? Это потому, что существует разрыв между объектным миром и миром отношений.

  • В объектном мире все основано на объектах ; мы называли объекты теми вещами, которые имеют наши данные.

  • Весь реляционный мир основан на множествах, и мы имеем дело с таблицами и строками, которые отличаются от мира объектов.

  • В объектном мире у нас есть однонаправленные ассоциации . Если у клиента есть указатель на заказ, это не обязательно означает, что у заказа есть указатель на клиента, это может быть или не быть.

  • В реляционном мире все ассоциации являются двунаправленными, и это может быть сделано с помощью внешнего ключа.

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

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

  • В объектном мире есть понятие наследования, где транспортное средство может иметь несколько различных подклассов, поэтому автомобиль — это тип транспортного средства, лодка — это тип транспортного средства, а спортивная машина — это тип автомобиля, эти типы наследственные отношения.

  • В реляционном мире нет этого понятия наследования.

В объектном мире все основано на объектах ; мы называли объекты теми вещами, которые имеют наши данные.

Весь реляционный мир основан на множествах, и мы имеем дело с таблицами и строками, которые отличаются от мира объектов.

В объектном мире у нас есть однонаправленные ассоциации . Если у клиента есть указатель на заказ, это не обязательно означает, что у заказа есть указатель на клиента, это может быть или не быть.

В реляционном мире все ассоциации являются двунаправленными, и это может быть сделано с помощью внешнего ключа.

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

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

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

В реляционном мире нет этого понятия наследования.

картографирование

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

картографирование

  • В вашем приложении вам понадобятся определения классов, которые обычно представляют собой код C # и его код .NET, представляющий наши классы, такие как класс Employee, класс Customer, класс Order и т. Д.

  • Внизу вы можете увидеть схему базы данных, которая является нашим языком определения данных, в реляционной базе данных, которая определяет, как выглядит таблица клиента, как выглядит таблица сотрудника.

  • Между ними у нас есть метаданные отображения, которые говорят объектно-реляционному преобразователю, как переводить из мира объектов в C # в мир баз данных в терминах строк и столбцов и отношений внешнего ключа.

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

  • Он представлен файлами HBM (Hibernate Mapping) , которые являются файлами XML.

В вашем приложении вам понадобятся определения классов, которые обычно представляют собой код C # и его код .NET, представляющий наши классы, такие как класс Employee, класс Customer, класс Order и т. Д.

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

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

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

Он представлен файлами HBM (Hibernate Mapping) , которые являются файлами XML.

База данных поддерживается

NHibernate поддерживает широкий спектр различных баз данных. Любая существующая реляционная база данных может быть доступна в NHibernate.

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

Это также очень хорошо работает с Oracle .

Он также поддерживает DB2, Firebird, MySQL, PostgreSQL, SQL Lite

Он также имеет драйверы ODBC и OLEDB .