160 likes | 324 Views
NHibernate. Andrej Palovi č. Agenda. Prečo používať ORM Čo je NHibernate ? Funkcionalita Nhibe r natu Mapovanie Dotazovanie. Prečo používať ORM. 90% operácii nad DB je CRUD Optimalizuje prístup do DB, takže je rýchlejší ako čistý ADO.NET Data access kód tvorí až 95%
E N D
NHibernate Andrej Palovič
Agenda • Prečo používať ORM • Čo je NHibernate? • Funkcionalita Nhibernatu • Mapovanie • Dotazovanie
Prečo používať ORM • 90% operácii nad DB jeCRUD • Optimalizuje prístup do DB, takže je rýchlejší ako čistý ADO.NET • Data access kód tvorí až 95% • Viac času na skutočné programovanie (alebo testovanie)
Čo je NHibernate • Je objektovo relačný pamovač (ORM) • Pracuje s čistými.NET objektami • Pre popis mapovania medzi DB a objektamy slúžia XML súbory
FunkcieNHibernatu • Modelovanie vzťahov one-to-one, one-to-many, many-to-many, dedičnosť • Podpora mnohých DB • MS SQL • MySql • Oracle • Access • FireBird • DB2 • PostgreSQL • 2 cache levels • Lazy loading
Mapovanie DB tabuliek do objektov • Existujú 3 spôsoby • XML(štandardný spôsob mapovania) • ActiveRecord(mapovaniepomocouatribútov) • FluentNhibernate(silnotypovémapovaniepomocou fluent interfacu) • Všetky alternatívy k XML vo svojom vnútri generujú xml mapovanie
ActiveRecordmapovanie • Mapovanie pomocou atribútov • Najmenej flexibilný spôsob
Fluent Nhibernate • Mapovaniepomocou fluent intefacu • Silnotypové mapovanie • Umožnuje kombinovať Fluent mapovanie s Xml mapovaním
Dotazovanie • 4 druhy dotazovania • HQL (Hibernate query language) • Criteria • Linq to Nhibernate • NhLambdaExtensions
HQL • Najflexibilnejší • Podporuje väčšinu dotazovacích funkcií SQL • Najmenej vhodný • Dotaz sa píše vo forme stringu • Žiadna typová bezpečnosť
Criteria • Umožnujú objektový prístup • Nie je plne typový
Linq to Nhibernate • Nie je úplná podpora Linqu • Nadstavba nad Criteria • Výkonnostne najhoršie riešenie • Čaká sa na prepis do HQL
NhLambdaExtensions • Nadstavba nad Criteria • Plne typový spôsob • Rýchlostne rovnako ako criteria