Similar presentations:
Основные компоненты 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. Типы коллекций
SetBag
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