Основные компоненты NHibernate
Конфигурация
Фабрика сессий
Фабрика сессий. Основные методы
Сессии
Генерация скриптов на основе файлов маппинга
Id генераторы
Маппинг
Маппинг через xml-файлы
Пример маппинга через xml-файлы
Маппинг через атрибуты
Пример маппинга через атрибуты
Маппинг с помощью кода
Пример маппинга с помощью кода
Типы коллекций
Маппинг. Component
Связь один-к-одному. Сущности
Один-к-одному
Связь один-ко-многим. Сущности
Один-ко-многим
Многие-ко-многим. Сущности
Многие-ко-многим
Связь многие-ко-многим
Батчинг. Пример
Батчинг. Результат
Отложенная загрузка (lazy load)
Fetch
Кэширование
Состояния сущности
Методы экземпляра сессии
Транзакции
Flush
Запросы. Native SQL. Пример 1.
Запросы. Native SQL. Пример 2.
Запросы. Native SQL. Пример 3.
Запросы. Native SQL. Пример 4.
Запросы. Native SQL. Пример 5.
Запросы. Native SQL. Пример 6.
Запросы. HQL. Пример 1.
Запросы. HQL. Пример 2.
Запросы. HQL. Пример 3.
Запросы. HQL. Пример 4-1.
Запросы. HQL. Пример 4-2.
Запросы. HQL. Пример 5-1.
Запросы. HQL. Пример 5-2.
Запросы. HQL. Пример 5-3.
Запросы. HQL. Пример 6-1.
Запросы. HQL. Пример 6-2.
Запросы. HQL. Пример 7-1.
Запросы. HQL. Пример 7-2.
Запросы. LINQ to NH. Пример 1-1.
Запросы. LINQ to NH. Пример 1-2.
Запросы. LINQ to NH. Пример 2-1.
Запросы. LINQ to NH. Пример 2-2.
Запросы. LINQ to NH. Пример 3-1.
Запросы. LINQ to NH. Пример 3-2.
Запросы. LINQ to NH. Пример 4-1.
Запросы. LINQ to NH. Пример 4-2.
Запросы. LINQ to NH. Пример 5-1.
Запросы. LINQ to NH. Пример 5-2.
Запросы. LINQ to NH. Пример 6-1.
Запросы. LINQ to NH. Пример 6-2.
IEnumerable<T> vs IQueryable<T>.
IEnumerable<T> vs IQueryable<T>.
Материализация
Материализация
Проверка на Null
Проверка на Null
1.68M
Категория: Базы данныхБазы данных

Основные компоненты NHibernate

1. Основные компоненты NHibernate

2. Конфигурация

3. Фабрика сессий


Создается на основе объекта конфигурации
Представляет собой абстракцию базы данных
На каждую СУБД своя фабрика сессий
Временные затраты на создание
Генерирует сессии

4. Фабрика сессий. Основные методы


Close ()
Evict (Type t, object id)
EvictCollection (string roleName, object id)
GetCurrentSession ()
OpenSession ()
OpenStatelessSession ()

5. Сессии


Взаимодействие с базой данных
Создание не является ресурсоемким
Используется наиболее часто

6. Генерация скриптов на основе файлов маппинга


Анализ файлов маппинга
Генерация необходимых sql-скриптов
Анализ файлов маппинга на предмет изменений
Генерация необходимых sql-скриптов

7. Id генераторы


IDENTITY (sql server, mysql)
GUID
SEQUENCE (oracle, postgresql)
GUID.COMB (более быстрый)
HILO
NATIVE
SEQHILO
ASSIGNED
Интерфейс IIdentifierGenerator

8. Маппинг


Проекция сущностей на таблицы в базе данных
Различные варианты маппинга
Обязательные требования

9. Маппинг через xml-файлы

Плюсы
Множество примеров в интернете
Не нужно повторно перекомпилировать приложение
Минусы
Отсутствует IntelliSense
Отсутствие валидации во время компиляции

10. Пример маппинга через xml-файлы

11. Маппинг через атрибуты

Плюсы
Не нужно создавать xml-файлы
Легкий переход с xml-файлов
Минусы
Ухудшается удобочитаемость кода
У свойств, состоящих более чем из 1 атрибута нужно прописывать индексы

12. Пример маппинга через атрибуты

13. Маппинг с помощью кода

Плюсы
Не нужно создавать xml-файлы
Не требуются дополнительные библиотеки
Минусы
Структура маппинга не совсем соответствует xml-файлам

14. Пример маппинга с помощью кода

15. Типы коллекций

Set
Bag
List
Map
-
+
+
-
Отсортировано
-
-
+
+
Доступ по индексу
-
+
+
+
IEnumerable<T>
ICollection<T>
ISet<T>
IEnumerable<T>
ICollection<T>
IList<T>
IEnumerable<T>
ICollection<T>
IList<T>
IDictionary<K, V>
Дубликаты
Поддерживаемые
типы в .NET

16. Маппинг. Component

17. Связь один-к-одному. Сущности

18. Один-к-одному

19. Связь один-ко-многим. Сущности

20. Один-ко-многим

21. Многие-ко-многим. Сущности

22. Многие-ко-многим

23. Связь многие-ко-многим

24. Батчинг. Пример

25. Батчинг. Результат

26. Отложенная загрузка (lazy load)

• Определяет режим подгрузки вложенных элементов

27. Fetch

• Определяет способ подгрузки вложенных элементов
• Принимаемые значения – «select», «join»

28. Кэширование

• Кэш первого уровня
• Кэш второго уровня
• Кэш запросов

29. Состояния сущности

• Transient (временный)
• Persistent (постоянный)
• Detached (отдельный)
• Состояния меняются с помощью методов экземпляра сессии

30. Методы экземпляра сессии


Save
Update
Delete
SaveOrUpdate
Close
Clear
Evict
BeginTransaction
Flush
Get
Load
Merge
Persist
SetBatchSize

31. Транзакции

• ACID
• Явные, неявные
• Вложенные транзакции
• Commit
• Rollback
• IsActive
• WasCommitted
• WasRolledBack

32. Flush

• Never
• Commit
• Always
• Auto

33. Запросы. Native SQL. Пример 1.

34. Запросы. Native SQL. Пример 2.

35. Запросы. Native SQL. Пример 3.

36. Запросы. Native SQL. Пример 4.

37. Запросы. Native SQL. Пример 5.

38. Запросы. Native SQL. Пример 6.

39. Запросы. HQL. Пример 1.

40. Запросы. HQL. Пример 2.

41. Запросы. HQL. Пример 3.

42. Запросы. HQL. Пример 4-1.

43. Запросы. HQL. Пример 4-2.

44. Запросы. HQL. Пример 5-1.

45. Запросы. HQL. Пример 5-2.

46. Запросы. HQL. Пример 5-3.

47. Запросы. HQL. Пример 6-1.

48. Запросы. HQL. Пример 6-2.

49. Запросы. HQL. Пример 7-1.

50. Запросы. HQL. Пример 7-2.

51. Запросы. LINQ to NH. Пример 1-1.

52. Запросы. LINQ to NH. Пример 1-2.

53. Запросы. LINQ to NH. Пример 2-1.

54. Запросы. LINQ to NH. Пример 2-2.

55. Запросы. LINQ to NH. Пример 3-1.

56. Запросы. LINQ to NH. Пример 3-2.

57. Запросы. LINQ to NH. Пример 4-1.

58. Запросы. LINQ to NH. Пример 4-2.

59. Запросы. LINQ to NH. Пример 5-1.

60. Запросы. LINQ to NH. Пример 5-2.

61. Запросы. LINQ to NH. Пример 6-1.

62. Запросы. LINQ to NH. Пример 6-2.

63. IEnumerable<T> vs IQueryable<T>.

IEnumerable<T> vs IQueryable<T>.

64. IEnumerable<T> vs IQueryable<T>.

IEnumerable<T> vs IQueryable<T>.

65. Материализация

66. Материализация

67. Проверка на Null

68. Проверка на Null

English     Русский Правила