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

Содержание

Слайд 2

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

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

Слайд 3

Фабрика сессий Создается на основе объекта конфигурации Представляет собой абстракцию базы

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

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

СУБД своя фабрика сессий
Временные затраты на создание
Генерирует сессии
Слайд 4

Фабрика сессий. Основные методы Close () Evict (Type t, object id)

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

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

object id)
GetCurrentSession ()
OpenSession ()
OpenStatelessSession ()
Слайд 5

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

Сессии

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

Слайд 6

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

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

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

Анализ файлов

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

Id генераторы IDENTITY (sql server, mysql) SEQUENCE (oracle, postgresql) HILO SEQHILO

Id генераторы

IDENTITY (sql server, mysql)
SEQUENCE (oracle, postgresql)
HILO
SEQHILO

GUID
GUID.COMB (более быстрый)
NATIVE
ASSIGNED

Интерфейс IIdentifierGenerator

Слайд 8

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

Маппинг

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

Слайд 9

Маппинг через xml-файлы Множество примеров в интернете Не нужно повторно перекомпилировать

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

Множество примеров в интернете
Не нужно повторно перекомпилировать приложение

Плюсы

Минусы

Отсутствует IntelliSense
Отсутствие

валидации во время компиляции
Слайд 10

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

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

Слайд 11

Маппинг через атрибуты Не нужно создавать xml-файлы Легкий переход с xml-файлов

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

Не нужно создавать xml-файлы
Легкий переход с xml-файлов

Плюсы

Минусы

Ухудшается удобочитаемость кода
У

свойств, состоящих более чем из 1 атрибута нужно прописывать индексы
Слайд 12

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

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

Слайд 13

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

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

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

Плюсы

Минусы

Структура маппинга

не совсем соответствует xml-файлам
Слайд 14

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

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

Слайд 15

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

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

Слайд 16

Маппинг. Component

Маппинг. Component

Слайд 17

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

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

Слайд 18

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

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

Слайд 19

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

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

Слайд 20

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

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

Слайд 21

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

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

Слайд 22

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

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

Слайд 23

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

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

Слайд 24

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

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

Слайд 25

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

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

Слайд 26

Отложенная загрузка (lazy load) Определяет режим подгрузки вложенных элементов

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

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

Слайд 27

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

Fetch

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

Слайд 28

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

Кэширование

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

Слайд 29

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

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

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

Слайд 30

Методы экземпляра сессии Save Update Delete SaveOrUpdate Close Clear Evict BeginTransaction

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

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

Слайд 31

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

Транзакции

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

Слайд 32

Flush Never Commit Always Auto

Flush

Never
Commit
Always
Auto

Слайд 33

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

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

Слайд 34

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

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

Слайд 35

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

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

Слайд 36

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

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

Слайд 37

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

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

Слайд 38

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

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

Слайд 39

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

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

Слайд 40

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

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

Слайд 41

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

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

Слайд 42

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

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

Слайд 43

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

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

Слайд 44

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

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

Слайд 45

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

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

Слайд 46

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

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

Слайд 47

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

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

Слайд 48

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

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

Слайд 49

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

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

Слайд 50

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

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

Слайд 51

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

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

Слайд 52

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

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

Слайд 53

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

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

Слайд 54

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

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

Слайд 55

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

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

Слайд 56

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

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

Слайд 57

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

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

Слайд 58

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

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

Слайд 59

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

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

Слайд 60

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

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

Слайд 61

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

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

Слайд 62

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

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

Слайд 63

IEnumerable vs IQueryable .

IEnumerable vs IQueryable.

Слайд 64

IEnumerable vs IQueryable .

IEnumerable vs IQueryable.

Слайд 65

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

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

Слайд 66

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

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

Слайд 67

Проверка на Null

Проверка на Null