Objektovo-Relačné Mapovanie a Jeho Použitie Na Platforme .NET

Objektovo-Relačné Mapovanie a Jeho Použitie Na Platforme .NET

MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Objektovo-relačné mapovanie a jeho použitie na platforme .NET DIPLOMOVÁ PRÁCA Tomáš Stach Brno, 2013 i Prehlásenie Prehlasujem, že táto diplomová práca je mojím autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Vedúci práce : RNDr. David Sehnal ii Poďakovanie Rád by som poďakoval vedúcemu práce RNDr. Davidovi Sehnalovi za jeho podporu a cenné pripomienky a svojim nadriadeným v zamestnaní za zhovievavosť. Poďakovanie si zaslúži aj moja rodina a priateľka za obrovskú dávku trpezlivosti. iii Zhrnutie Cieľom tejto práce je zoznámiť čitateľa s objektovo-relačným mapovaním na platforme .NET. Po predstavení relačného a objektového modelovania nasleduje popis problematiky objektovo-relačného mapovania, jeho výhodami, nevýhodami a rozdielmi jeho použitia v programoch voči klasickému dopytovaniu pomocou SQL, resp. využitiu inej ako relačnej databázy. Následne sú niektoré konkrétne najčastejšie používané nástroje predstavené detailne a je porovnaný ich výkon v niekoľkých testoch. Súčasťou práce je testovacia aplikácia, ktorá bola použitá pri porovnávaní a testovaní výkonu jednotlivých nástrojov. iv Kľúčové slová Relačná databáza, NoSQL databáza, objektovo-relačné mapovanie, návrhové vzory, platforma .NET, LINQ, Entity Framework v Obsah Kapitola 1 Úvod 1 1.1 Formulácia práce .................................................................................1 1.2 Delenie práce .......................................................................................1 Kapitola 2 Databázy a relačné modelovanie 2 2.1 Pred-relačné databázy .........................................................................2 2.2 Relačné databázy .................................................................................3 2.3 Post-relačné databázy ..........................................................................10 Kapitola 3 Objektové modelovanie 14 3.1 Vlastnosti objektu ...............................................................................14 3.2 Modelovanie s objektami .....................................................................15 3.3 Vzťahy medzi objektami ......................................................................16 Kapitola 4 Objektovo-relačné mapovanie 19 4.1 Impedance mismatch ...........................................................................19 4.2 Mapovanie objektov na relácie ............................................................21 4.3 Princípy fungovania ORM ...................................................................25 4.4 Výhody použitia ORM ........................................................................41 4.5 Nevýhody použitia ORM .....................................................................42 Kapitola 5 Platforma .NET a použité databázy 43 5.1 Platforma .NET ...................................................................................43 5.2 Microsoft SQL Server ..........................................................................50 5.3 RavenDB .............................................................................................51 Kapitola 6 Prehľad ORM nástrojov 52 6.1 Aktívne projekty..................................................................................52 6.2 Neaktívne projekty ..............................................................................56 Kapitola 7 Vybrané ORM nástroje 58 7.1 Entity Framework ................................................................................58 7.2 LINQ to SQL .......................................................................................66 7.3 NHibernate ..........................................................................................70 7.4 LLBLGen Pro ......................................................................................77 Kapitola 8 Testovanie 83 8.1 Testovacia aplikácia .............................................................................83 8.2 Prostredie ............................................................................................84 8.3 Testy ....................................................................................................85 8.4 Vyhodnotenie .......................................................................................95 vi Kapitola 9 Záver 97 Literatúra 99 Prílohy 105 Príloha A: Diagramy databáz ......................................................................105 Príloha B: Zdrojové kódy testovacích dopytov .............................................107 Príloha C: Elektronické prílohy ....................................................................131 Príloha D: Namerané výsledky testov ..........................................................131 vii Kapitola 1 Úvod Väčšina netriviálnych aplikácií potrebuje nejakým spôsobom uchovávať svoje dáta, v drvivej väčšine prípadov ide o databázu. Už desaťročia sú v praxi najviac nasadzované relačné databázy založené na relačnom modeli. Medzi momentálne najpopulárnejšie programovacie jazyky patrí hlavne Java a C#. [1] Tieto objektovo orientované jazyky sú dlhodobo zaužívané a primárne využívané na vývoj podnikového softvéru a webových aplikácií. Pri ich vývoji treba venovať čas prevodu zložitých dátových typov na jednoduché skalárne typy uchovávané v relačnej databáze. Tento prevod môže programátor vykonať ručne, alebo môže využiť nástroj objektovo- relačné mapovanie, ktorý umožňuje komplexne vyriešiť nesúlad medzi objektovým a relačným modelom. Je nutné určiť mapovanie tried na jednotlivé tabuľky, resp. mapovanie atribútov objektu na stĺpce tabuliek. Následne je programátorovi dovolené pracovať priamo s objektovým modelom namiesto relačnej databázy. Takáto práca s objektami je omnoho pohodlnejšia a efektívnejšia ako práca s navzájom prepojenými riadkami dát. 1.1 Formulácia práce Text práce je číslovaný a štruktúrovaný obvyklým spôsobom. Prvý výskyt cudzieho, alebo odborného termínu je označený kurzívou. Popisovaná problematika obsahuje množstvo anglických termínov, ktoré sú v prípade možného slovenského ekvivalentu preložené. Originálny anglický názov je uvedený v zátvorke. Niektoré výrazy nie sú lokalizované z dôvodu neexistujúceho (MapReduce ), alebo nevhodného (Session ) prekladu. Ukážky zdrojových kódov a názvy tried, či metód sú odlíšené iným fontom textu. 1.2 Delenie práce Kapitola 2 popisuje rozdelenie databáz. U relačných sú vysvetlené špecifiká relačného modelovania a problematiky s ním spojenej, záver kapitoly sa týka moderných databázových systémov (NoSQL ). Nasledujúca kapitola 3 predstavuje objekty používané v objektovo orientovanom programovaní. Po zoznámení čitateľa s relačným a objektovým prístupom práca pokračuje kapitolou 4, ktorá predstavuje objektovo-relačné mapovanie, technológiu umožňujúcu prepojiť oba spomínané svety. Sú spomenuté základné pojmy problematiky a návrhové vzory využité pri tvorbe nástrojov spadajúcich do tejto kategórie. V kapitole 5 je popis základných technológii použitých v praktickej časti práce. Kapitoly 6 a 7 sa zaoberajú aktuálnou situáciou objektovo-relačného mapovania na platforme .NET. Niektoré nástroje predstavené v týchto kapitolách sú otestované v aplikácii, ktorá je spolu so spôsobom testovania a výsledkami popísaná v kapitole 8. Posledná kapitola 9 obsahuje záver celej problematiky a ponúka názor autora práce. 1 Kapitola 2 Databázy a relačné modelovanie Pod pojmom databáza si aj človek bez informatického vzdelania dokáže predstaviť skupinu údajov, ktoré sú istým spôsobom štruktúrované. Typickým príkladom môže byť napríklad databáza telefónnych čísiel, či liekov. V oblasti počítačov pojem databáza vyjadruje v princípe to isté: štruktúrovanú kolekciu (množinu) usporiadaných dát využívanú k ukladaniu a získavaniu informácií. Prvé databázové systémy sa objavili pred viac ako piatimi dekádami a za túto dobu prešli veľmi zaujímavým vývojom. Momentálne existuje značné množstvo druhov, najpoužívanejším je jednoznačne relačný typ, ktorému sekundujú databázy typu NoSQL. Táto kapitola uvedie čitateľa do problematiky databáz a podrobnejšie mu vysvetlí princípy na ktorých fungujú aktuálne tieto dva najpoužívanejšie typy. Ďalej sú vysvetlené základy relačného modelovania, ktorých pochopenie je dôležité pri štúdiu objektovo- relačného mapovania v kapitole 4. Dnes sú pokladané za databázový „štandard“ relačné databázy, ktoré sú najviac rozšírené, dostupné, majú za sebou veľmi dlhý vývoj a hlavne sú plne dostačujúce. Vo väčšine prípadov ide o prvý typ databázy s ktorým začínajúci vývojár príde do styku pri bežnej praxi, alebo v škole. Existuje však mnoho iných typov databáz, ktoré nespadajú do kategórie relačných a môžeme ich z časového hľadiska rozdeliť do dvoch skupín: na tie, ktoré vznikli skôr a na tie, ktoré vznikli neskôr, teda na pred-relačné a post-relačné databázy. Pojmy databáza a databázový systém sa často zamieňajú. Databázový systém, resp. Systém riadenia báze dát ( SRBD 1 ) je kolekcia softvéru, ktorá užívateľom umožňuje získavať, vytvárať a modifikovať informácie z databázy. Databáza je len samotný súbor dát. 2.1 Pred-relačné databázy Prvé databázy vznikli v 60-tych rokoch minulého storočia. Historicky prvou komerčnou bola databáza IMS ( Information Management System ) hierarchického typu od spoločnosti IBM, ukladajúca dáta v stromovej štruktúre. Základnými operáciami bolo vyhľadávanie všetkých potomkov alebo rodiča daného záznamu. Dnes podobnú štruktúru uchovania dát využíva značkovací

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    143 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us