Потребителски вход

Запомни ме | Регистрация
Постинг
18.01.2008 15:50 - NHibernate
Автор: karamfilov Категория: Технологии   
Прочетен: 1142 Коментари: 1 Гласове:
0

Последна промяна: 21.01.2008 20:05

Постингът е бил сред най-популярни в категория в Blog.bg

NHibernate

 

NHibernate представлява обектно – релационен мапър изграден на основата на Hibernate ver. 2.1.Последната версия на NHibernate e 1.2.1 и включва доста функции от Hibernate 3 както и подръжка на .NET 2.0, съхранени процедури и дженерикс типове.В момента се разработва версия 2.0.

Моделирането възоснова на обектно - релационния модел представлява преобразуване на релационния модел на базите данни до обектно ориентиран вид чрез съответствия от вида клас – таблица и свойство – колона.Този подход за моделиране се нарича Data Mapper.

При работа с Hibernate(NHibernate) най - общо процедурата е следната:Създаваме клас съответстващ на предварително създадена таблица в база данни.Този клас има полета и свойства съответстващи на колони от съответната таблица.При компилирането на този фаил NHibernete ще достъпва тези полета чрез рефлекция.

След като имаме таблица и съответстващ на нея клас трябва да направим фаил за съответствията (map file).Това е xml фаил съдържащ съответствията между таблицата и класа.Записва се с разширение (име на клас).hbm.xml и трябва да бъде записан като embedded resource за да бъде част от асеблито.При дефинирането на съответствията трябва да се окаже асемблито за да може NHibernate-a да го открие.

Също така трябва да имаме и кофигурационен фаил, който да описва текущата конфигурация на NHibernate-a.

 

Конфигуриране на NHibernate

Конфигурирането може да стане програмно или чрез XML фаил.Тъй като NHibernate предоставя богати възможности за работа с различни бази данни съществуват множество променливи, чрез които може да стане конфигурацията.При програмното конфигуриране подаваме IDictionary колекция от променливи на Configuration.SetProperties().При използването на XML фаил имаме няколко възможности.Можем да създадем конфигурационна секция за NHibernate в кофигурационния фаил на приложението.Той би могъл да бъде например web.config.Тази секция трябва да се казава/span>nhibernateadd key=”” value=”” />

Кофигуриането на връзката с базата данни става чрез задаване на стойности на променливите отговарящи за това.

Променливите включват определяне на hibernate.connection.provider_class като NHibernate поддържа собствени класове, които могат да бъдат зададени като стойност.В противен случай може да се използва асембли и клас имлементиращ IConnectionProvider.Същото се отнася и за променливата hibernate.connection.driver_class.Определя се и стойност, на hibernate.connection.connection_string и hibernate.dialect hibernate.dialect.Последната съдържа информация за базата данни която ще достъпваме.Стойностите на тзаи променлива са предварително определени според това какви бази данни поддържа версията на NHibernate – а, с която се работи.Поддържат се всички известни бази данни.

Файлове на съответствията (Мапинг файолве)

В  тези файлове записваме връската между таблиците и класовете.Един xml фаил може да съдържа повече от един клас.Могат да бъдат написани ръчно или да се използват специални инструменти генериращи .hbm.xml документи.Това какви елемнти ще съдържа мапинг файла зависи от конкретната таблица и връзките и с останалите таблици.Мапинг файловете са написани object-centric, което означава че са създадени спрямо структурата на класовете а не на таблиците. 

/span>hibernate-mappingid>, който ни дава уникален идентификатор на инстанцията на класа и първичния ключ от таблицата./span>id> елемента съдържа под елемент /span>generator> генериращ идентификатора ако трябва да се подадат някакви параметри се използва елемент /span>param>.Подаваме различни параметри според това каква база данни използваме.Например sequence за Oracle и identity за MS SQL Server.

Когато имаме копозитетeн първичен ключ, тогава трябва да се запише всяка една колона от таблицата, определяща този ключ в отделен span lang="EN" style="mso-ansi-language: EN">key-propertyiddiscriminator> елементът, част от секцията определя колона в таблицата, която ще бъде използвана като дискриминатор.Стойноста в тази колона се използва, когато в основния клас имаме клсове наследници на общ клас.Тогава стойноста в тази колона определя какъв клас да бъде инстанциран.Наличието на дискриминатор осигурява полиморфизъм на класовете наследници на базовия.

Елементът осигурява връзката колона – свойство.Той е част от /span>class> елемента.Задължителен атрибут е именто на свойството от клас.Ако не бъде посчена колона от таблица, по-подразбиране се търси колона с името на свойството.Типът на данните също не е задължителен – може да бъде определен от посоченето асембли.

и са елементи, чрез които се посочва връзка към друг клас изразяващ на таблица.Единствения задължителен елемент тук е property, който определя свойство от външния клас.Ако е зададено само свойство тогава колната на таблицата съдържаща външния ключ съвпада с името на свойството, а класа в който се намира свойството се определя чрез рефлекция.Типът на свойството определя подразбиращата се стойност на елемета class.Има възможност да бъде посочена колона с уникални стойости от външната таблица, която не представлява първичен ключ.Ако това не бъде направено по подразбиране се използва колоната с първичния ключ.

В случай, че имаме базов клас с един или повече наследника, а в таблицата съответстваща на този клас имаме колона дискримитор, която се грижи за полиморфизма на базовия клас трябва да изразим това в мапинг файла.Това става чрез елемент /span>subclassjoined- subclass>.Тъй като всеки клас наследник в този случай има собствена таблица в базата колона за дискриминатор не съществува и съответно нямаме атрибут discriminator-value.Останалите атрибути са същите както при елемента.

В файла на съответствията има възможност да бъдата посочвани коленкциите садържащи се в калса.За това се грижат елементите , , , , и .Важно е да се отбележи, че NHibernate изисква колекциите в класовете да бъдата декларирани чрез интерфейс.Колекцията съдържаща се в една таблица има собствена таблица.В рамките на един елемент отразчващ колекция се записва връзката между таблицата на каласа и таблицата на колекцията , /span>many-to-many




Гласувай:
0



Предишен постинг

1. анонимен - xanax
01.09.2011 21:59
Hi there You do have a superb posting. At times make an article regarding car dealer supplies. The primary reason for that is due to the fact I deal in auto dealership supplies for vehicles of various models.
цитирай
Търсене

За този блог
Автор: karamfilov
Категория: Технологии
Прочетен: 8986
Постинги: 2
Коментари: 1
Гласове: 15
Архив
Календар
«  Март, 2024  
ПВСЧПСН
123
45678910
11121314151617
18192021222324
25262728293031