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

Total Page:16

File Type:pdf, Size:1020Kb

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í
Recommended publications
  • Modellgetriebene O/R-Mapper: Überblick Und Vergleich“
    Technische Hochschule Köln TH Köln – University of Applied Sciences Campus Gummersbach Fakultät für Informatik und Ingenieurwissenschaften Fachhochschule Dortmund University of Applied Sciences and Arts Fachbereich Informatik Verbundstudiengang Wirtschaftsinformatik Abschlussarbeit zur Erlangung des Bachelorgrades Bachelor of Science in der Fachrichtung Informatik „Modellgetriebene O/R-Mapper: Überblick und Vergleich“ Erstprüfer: Prof. Dr. Heide Faeskorn-Woyke Zweitprüfer: Prof. Dr. Birgit Bertelsmeier vorgelegt am: 20.06.2016 von cand. Christian Herrmann aus Bollinghausen 3 42929 Wermelskirchen Tel.: 02196/8822737 Email: [email protected] Matr.-Nr.: 11082914 2 Inhaltsverzeichnis Abbildungsverzeichnis .................................................................................................. 5 Tabellenverzeichnis ...................................................................................................... 6 Abkürzungs- u. Symbolverzeichnis ............................................................................... 7 1 Das Besondere an modellgetriebenen O/R-Mappern ........................................... 9 2 Modellgetriebener Ansatz und O/R-Mapper im Licht wissenschaftlicher Erkenntnisse .................................................................................................. 11 2.1 Modellgetriebene Softwareentwicklung und der Wunsch nach Automatisierung in der Softwareentwicklung ............................................................................... 11 2.1.1 Model Driven Software Development
    [Show full text]
  • Automatically Detecting ORM Performance Anti-Patterns on C# Applications Tuba Kaya Master's Thesis 23–09-2015
    Automatically Detecting ORM Performance Anti-Patterns on C# Applications Tuba Kaya Master's Thesis 23–09-2015 Master Software Engineering University of Amsterdam Supervisors: Dr. Raphael Poss (UvA), Dr. Giuseppe Procaccianti (VU), Prof. Dr. Patricia Lago (VU), Dr. Vadim Zaytsev (UvA) i Abstract In today’s world, Object Orientation is adopted for application development, while Relational Database Management Systems (RDBMS) are used as default on the database layer. Unlike the applications, RDBMSs are not object oriented. Object Relational Mapping (ORM) tools have been used extensively in the field to address object-relational impedance mismatch problem between these object oriented applications and relational databases. There is a strong belief in the industry and a few empirical studies which suggest that ORM tools can cause decreases in application performance. In this thesis project ORM performance anti-patterns for C# applications are listed. This list has not been provided by any other study before. Next to that, a design for an ORM tool agnostic framework to automatically detect these anti-patterns on C# applications is presented. An application is developed according to the designed framework. With its implementation of analysis on syntactic and semantic information of C# applications, this application provides a foundation for researchers wishing to work further in this area. ii Acknowledgement I would like to express my gratitude to my supervisor Dr. Raphael Poss for his excellent support through the learning process of this master thesis. Also, I like to thank Dr. Giuseppe Procaccianti and Prof. Patricia Lago for their excellent supervision and for providing me access to the Green Lab at Vrije Universiteit Amsterdam.
    [Show full text]
  • Nhibernate Reference Documentation
    NHibernate Reference Documentation Version: 5.0 Table of Contents Preface ..........................................................................................................................................viii 1. Quick-start with IIS and Microsoft SQL Server ..........................................................................1 1.1. Getting started with NHibernate .......................................................................................... 1 1.2. First persistent class ........................................................................................................... 2 1.3. Mapping the cat ................................................................................................................. 2 1.4. Playing with cats ................................................................................................................ 3 1.5. Finally ...............................................................................................................................6 2. Architecture ................................................................................................................................7 2.1. Overview ...........................................................................................................................7 2.2. Instance states .................................................................................................................... 9 2.3. Contextual Sessions .........................................................................................................
    [Show full text]
  • A Solution to the Object-Relational Mismatch
    Universidade do Minho Escola de Engenharia Miguel Esteves CazDataProvider: A solution to the object-relational mismatch Outubro de 2012 Universidade do Minho Escola de Engenharia Departamento de Informática Miguel Esteves CazDataProvider: A solution to the object-relational mismatch Dissertação de Mestrado Mestrado em Engenharia Informática Trabalho realizado sob orientação de Professor José Creissac Campos Outubro de 2012 To my parents... \Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice." Christopher Alexander Abstract Today, most software applications require mechanisms to store information persistently. For decades, Relational Database Management Systems (RDBMSs) have been the most common technology to provide efficient and reliable persistence. Due to the object-relational paradigm mismatch, object oriented applications that store data in relational databases have to deal with Object Relational Mapping (ORM) problems. Since the emerging of new ORM frameworks, there has been an attempt to lure developers for a radical paradigm shift. However, they still often have troubles finding the best persistence mechanism for their applications, especially when they have to bear with legacy database systems. The aim of this dissertation is to discuss the persistence problem on object oriented applications and find the best solutions. The main focus lies on the ORM limitations, patterns, technologies and alternatives. The project supporting this dissertation was implemented at Cachapuz under the Project Global Weighting Solutions (GWS). Essentially, the objectives of GWS were centred on finding the optimal persistence layer for CazFramework, mostly providing database interoperability with close-to-Structured Query Language (SQL) querying.
    [Show full text]
  • SAMPLE CHAPTER Nhibernate in Action
    SAMPLE CHAPTER NHibernate in Action Pierre Henri Kuaté Tobin Harris Christian Bauer Gavin King Chapter 5 Copyright 2009 Manning Publications brief contents PART 1DISCOVERING ORM WITH NHIBERNATE............................. 1 1 ■ Object/relational persistence in .NET 3 2 ■ Hello NHibernate! 24 PART 2NHIBERNATE DEEP DIVE ................................................. 49 3 ■ Writing and mapping classes 51 4 ■ Working with persistent objects 100 5 ■ Transactions, concurrency, and caching 134 6 ■ Advanced mapping concepts 166 7 ■ Retrieving objects efficiently 207 PART 3NHIBERNATE IN THE REAL WORLD.................................. 257 8 ■ Developing NHibernate applications 259 9 ■ Writing real-world domain models 286 10 ■ Architectural patterns for persistence 319 1 Transactions, concurrency, and caching This chapter covers ■ Database transactions and locking ■ Long-running conversations ■ The NHibernate first- and second-level caches ■ The caching system in practice with CaveatEmptor Now that you understand the basics of object/relational mapping with NHibernate, let’s take a closer look at one of the core issues in database application design: transaction management. In this chapter, we examine how you use NHibernate to manage transactions, how concurrency is handled, and how caching is related to both aspects. Let’s look at our example application. Some application functionality requires that several different things be done together. For example, when an auction finishes, the CaveatEmptor application has to perform four tasks: 1 Mark the winning (highest amount) bid. 2 Charge the seller the cost of the auction. 3 Charge the successful bidder the price of the winning bid. 4 Notify the seller and the successful bidder. 134 Understanding database transactions 135 What happens if you can’t bill the auction costs because of a failure in the external credit card system? Your business requirements may state that either all listed actions must suc- ceed or none must succeed.
    [Show full text]
  • Nhibernate Reference Documentation
    NHibernate Reference Documentation Version: 5.1 Table of Contents Preface ..........................................................................................................................................viii 1. Quick-start with IIS and Microsoft SQL Server ..........................................................................1 1.1. Getting started with NHibernate .......................................................................................... 1 1.2. First persistent class ........................................................................................................... 2 1.3. Mapping the cat ................................................................................................................. 2 1.4. Playing with cats ................................................................................................................ 3 1.5. Finally ...............................................................................................................................6 2. Architecture ................................................................................................................................7 2.1. Overview ...........................................................................................................................7 2.2. Instance states .................................................................................................................... 9 2.3. Contextual Sessions .........................................................................................................
    [Show full text]
  • Master Thesis June 2006 Jakob T. Andersen [email protected] Rune D
    Master Thesis June 2006 Jakob T. Andersen [email protected] Rune D. Hammerskov [email protected] Lars H. Nielsen [email protected] Faculty of Engineering and Science Aalborg University Department of Computer Science Title: Amigo Abstract: Subtitle: An Object Relational Query Amigo is a language for querying relational Language databases from an object oriented setting. Tra- ditionally, querying relational data from object oriented programming languages entails using Project period: SQL queries embedded in strings. This ap- Dat6 proach is not optimal, as queries are neither 2006 syntax nor type checked until they are sent to the database at runtime, with the result Project group: that fatal errors could occur during execution. d632a Amigo addresses this problem by providing syn- tax and type checking of its queries. Further- Group members: more, Amigo is designed with intuitiveness and Rune D. Hammerskov ease of use in mind. Amigo queries are ex- Jakob T. Andersen pressed using the concept of filters that was es- Lars H. Nielsen tablished in the previous project Language In- tegrated Persistence. This concept is further Supervisor: developed and expanded to accommodate the Lone Leth Thomsen language features of Amigo. Copies: 7 Pages: 123 Rune D. Hammerskov Jakob T. Andersen Lars H. Nielsen Preface Prerequisites This report is aimed at software engineers. The reader should have a basic knowledge of both object oriented programming and relational databases. As the report deals with language development the reader should have some knowledge about this as well. Reading notes The report consists of nine chapters and three appendices. The first chapter introduces the problem that this report tries to solve.
    [Show full text]
  • Nhibernate Reference Documentation
    NHibernate Reference Documentation Version: 5.3 Table of Contents Preface ............................................................................................................................................ix 1. Quick-start with IIS and Microsoft SQL Server ..........................................................................1 1.1. Getting started with NHibernate .......................................................................................... 1 1.2. First persistent class ........................................................................................................... 2 1.3. Mapping the cat ................................................................................................................. 2 1.4. Playing with cats ................................................................................................................ 3 1.5. Finally ...............................................................................................................................6 2. Architecture ................................................................................................................................7 2.1. Overview ...........................................................................................................................7 2.2. Instance states .................................................................................................................... 9 2.3. Contextual Sessions .........................................................................................................
    [Show full text]