Objektově relační mapování - ORM. Obsah Co je to ORM Využití ORM Dědičnost –jednoduchý příklad –metody jak dědičnost popsat pomocí relační databáze Vztahy.

Slides:



Advertisements
Podobné prezentace
Makra v Excelu.
Advertisements

Normalizace Řada analytiků se mylně domnívá, že pro každý objekt existuje jedno jediné univerzálně použitelné nejlepší řešení bez ohledu na řešený problém.
Tabulky v MS ACCESS Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jiří Novák.
Zpracování SQL Lubomír Andrle 5. přednáška
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA
Základy databázových systémů
Přednáška č. 1 Úvod, Historie zpracování dat, Základní pojmy
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
Aplikační a programové vybavení
Ing. Monika Šimková. Máme-li data reprezentovat v databázi, jak vybereme jejich strukturu na konceptuální úrovni? Konceptuální modelování analyzuje požadavky.
Databáze.
Microsoft Office Access
DATABÁZOVÉ SYSTÉMY Ing. Roman Danel, Ph.D.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Fakulta elektrotechniky a informatiky
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Václav Martínek. Evidence předení koček Vytvoření nové databáze - Po přihlášení se k databázovému serveru (Database Engine) si ze všeho nejdříve vytvoříme.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
Úvod do databází Databáze.
Martin Kirschbaum 4.A,  určitá uspořádaná množina informací (dat) uložená na paměťovém médiu  Databázový program - umožňuje tvořit, editovat,
Databáze Jiří Kalousek.
1IT S ÍŤOVÝ DATOVÝ MODEL Ing. Jiří Šilhán. S ÍŤOVÝ DATOVÝ MODEL Je historicky nejstarším datovým modelem. Jeho základem jsou vzájemně propojené množiny.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
D ATOVÉ MODELY Ing. Jiří Šilhán. D ATABÁZOVÉ SYSTÉMY Patří vedle textových editorů a tabulkových kalkulátorů k nejrozšířenějším představitelům programového.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
DATOVÉ MODELY (c) Tralvex Yeap. All Rights Reserved.
Fakulta elektrotechniky a informatiky
Objektové programování
Relační databáze.
1IT D OTAZOVACÍ JAZYKY V RELAČNÍCH DATABÁZÍCH Ing. Jiří Šilhán.
Konceptuální návrh databáze
Vypracoval: Ondřej Dvorský Třída: VIII.A
Databázové systémy. Práce s daty Ukládání dat Aktualizace dat Vyhledávání dat Třídění dat Výpočty a agregace.
Základní pojmy Systém je abstrakce, kterou si lidé vytvářejí v procesu poznávání jako nástroj zkoumání reálných objektů.
Metainformační systém založený na XML Autor: Josef Mikloš Vedoucí práce: Ing. Jan Růžička, Ph.D. V/2004.
Informatika pro ekonomy II přednáška 10
Databázové systémy Přednáška č. 4 Proces návrhu databáze.
KIV/ZIS cvičení 3 Tomáš Potužák.
Číslo šablony: III/2 VY_32_INOVACE_P4_3.6 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze - formulář Typ: DUM - kombinovaný Předmět:
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
IB111 Programování a algoritmizace
Ukládání heterogenních dat pomocí rozvolněných objektů Michal Žemlička.
DATABÁZOVÉ SYSTÉMY. 2 DATABÁZOVÝ SYSTÉM SYSTÉM ŘÍZENÍ BÁZE DAT (SŘBD) PROGRAM KTERÝ ORGANIZUJE A UDRŽUJE NASHROMÁŽDĚNÉ INFORMACE DATABÁZOVÁ APLIKACE PROGRAM.
Konceptuální návrh databáze
Databázové modelování
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Databázové systémy Informatika pro ekonomy, př. 18.
 Model je souhrn pravidel pro reprezentaci logické organizace dat v databázi.Rozeznáváme t ř i základní modely dat - hierarchický, sí ť ový a rela č.
Databázové systémy Datové modely.
Databázové systémy Úvod, Základní pojmy. Úvod S rozvojem lidského poznání roste prudce množství informací. Jsou kladeny vysoké požadavky na ukládání,
E-R diagram Entity – Relation diagram, diagram entit a vztahů mezi nimi Entity – objekty, které chci v databázi popisovat, mohou nabývat různých hodnot,
Perzistence XML dat Kamil Toman
Úvod do databází zkrácená verze.
● Databaze je soubor dat,slouží pro popis reálného světa(např.evidence čkolní knihovny..) ● Relační databaze je databáze založená na relačním modelu.
YOUR LOGO C# Entity Framework. YOUR LOGO  Entity framework nám poskytuje: -Vytváří objektový model na základě databázového schématu -Mapuje tabulky,
 Program pro tvorbu tabulek.  Síť buněk, do kterých můžeme vkládat libovolné údaje  Podstatou jsou vzorce, pomocí kterých provádíme v buňce operace.
Databáze ● úložiště dat s definovaným přístupem ● typy struktury – strom, sekvence, tabulka ● sestává z uspořádaných záznamů ● databáze – struktura – záznam.
Význam relací Typy relací Vytvoření relace Nastavení relace Podtypy relace Referenční integrita.
Datové typy MS Access (3). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně.
Databáze MS ACCESS 2010.
Výpočetní technika Akademický rok 2008/2009 Letní semestr
Databázové systémy 1 – KIT/IDAS1 Ing. Monika Borkovcová, Ph.D.
Lazy load Použity informace z knihy Patterns of Enterprise Application Architecture od M. Fowlera Jan Sládek.
Informatika pro ekonomy přednáška 8
Normální formy Projekt OBZORY
Relační model databáze
Přednáška 9 Triggery.
Databázové systémy UIN010
Transkript prezentace:

Objektově relační mapování - ORM

Obsah Co je to ORM Využití ORM Dědičnost –jednoduchý příklad –metody jak dědičnost popsat pomocí relační databáze Vztahy mezi objekty –1:1, M:1, 1:M, M:N Strategie výběru objektu

Co je to ORM? Programovací technika – zajišťuje automatickou konverzi dat mezi rel. databází a OOP Vývoj aplikace – zachytit realitu – objekty aplikace = entity, v databázi entita = řádek/množina řádků tabulky, v OOP entita = instance třídy Tato rozdílná reprezentace vedla ke vzniku ORM

Využití ORM Technika se snaží dát unifikovaný přístup k libovol. objektu, se kterým v aplikaci pracujeme – vývojář odstíněn od práce s SQL dotazy Usnadnění provádění CRUD operací Zajištění perzistentního uchovávání dat Automatická konverze rozdílných datových typů mezi dat. systémem a prog. jazykem Řešení objektové dědičnosti

Využití ORM Hlavní cíl – synchronizace mezi používanými objekty v aplikaci a jejich reprezentací v datab. systému pro zajištění perzistence dat Řada implementací ORM – snaha odstínit vývojáře od psaní SQL dotazů + selekce objektů pomocí obj. přístupu – objektový dotazovací jazyk Výhoda nezávislosti aplikace na dat. systému

Dědičnost Možnost vytvoření hierarchické struktury tříd Relační databáze nepodporují –nutnost transformovat do struktury tabulek a vztahů mezi nimi

Dědičnost Jednoduchý příklad

Dědičnost Metody Jak dědičnost popsat pomocí relační databáze –Celá třída do jedné tabulky –Třída do jedné tabulky –Mapování hierarchie tříd do jedné tabulky

Metody Celá třída do jedné tabulky Pro každou třídu samostatná tabulka V tabulce jsou pak dostupné všechny položky –položky této třídy –položky zděděné z ostatních tříd

Celá třída do jedné tabulky Jednoduchý příklad –Třída Person nejvyšší v hierarchii dědičnosti –Definovány sloupce pro id, name a –V tabulkách popisující potomky definujeme také PK + sloupce z předka + nově definované sloupce

Celá třída do jedné tabulky Výhodou jednoduchý přístup k jednomu dat. objektu nebo více stejného typu Nevýhodou složitost údržby dat. schématu –Při úpravě rodičovské třídy musíme upravit databázové tabulky odp. této třídě –Nutnost také upravit tabulky, na které se mapují třídy dědící z upravené PK v tabulkách na sobě nezávisí –Je možné mít stejnou hodnotu klíče ve dvou tabulkách, ale klíč by měl být jedinečný v celé hierarchii tříd

Metody Třída do jedné tabulky Do jedné tabulky nemusíme mapovat všechny položky třídy - jen nově zavedené Tabulka odp. třídě obsahuje jen sloupce, na které se mapují položky deklarované v této třídě Mapování nejlépe odpovídá struktuře tříd v Javě

Třída do jedné tabulky Jednoduchý příklad –Vkládáním instance třídy Person - * záznam do tabulky Person_tabConcr –Vkládáním instance typu Employee - * záznam v obou tabulkách person_tabConcr i Employee_tabConcr –V tomto případě speciální požadavky na PK –V tabulce pro třídu na vrcholu hierarchie vytvoříme PK, v tabulkách pro potomky je složitější situace – PK je zároveň FK odkazující na předka

Třída do jedné tabulky Data jednoho objektu uložena ve více tabulkách – může zpomalit rychlost přístupu Pro ORM nástroj podporující formu líného načítání to může být efektivní

Metody Mapování hierarchie tříd do jedné tabulky Celou hierarchii lze namapovat do jedné tabulky V tomto případě nutné vložit do tabulky sloupce popisující položky ve všech podtřídách Z řádků pak není ihned zřejmé, kterou třídu popisují – vhodné zavést sloupec s id konkrétní třídy mapované na tento řádek

Mapování hierarchie tříd do jedné tabulky Příklad

Mapování hierarchie tříd do jedné tabulky V nevyužitých sloupcích bývá NULL Integritní omezení musíme napsat tak, abychom rozlišovali, zda je hodnota NULL skutečnou uloženou hodnotou nebo je takto nastavena proto, že se tyto v aktuálně ukládané třídě nepoužívají Výhoda – všechny položky v jedné tabulce – není třeba průchodu všech tabulek

Vztahy mezi objekty Základní prvek, který musí ORM podporovat Zajímá nás dvě základní vlastnosti –násobnost a směrovost Násobnost vztahu –popis ke kolika objektům se entita odkazuje (1:1, M:1, 1:M, M:N) Směrovost vztahů –jednosměrný a obousměrný vztah

Vztahy mezi objekty Vlastnící a inverzní strana vazby –při mapování vztahů obvykle jedna tabulka se sloupci obsahující odkaz do druhé tabulky –tabulka obsahující sloupec s cizím klíčen = vlastník vazby –tabulka na druhé straně = inverzní strana vazby

Vztah M:1 a 1:M Vztah many-to-one –nejjednodušší druh vztahu –z entity se odkazujeme na jednu entitu –z objednávky se můžeme dostat k zákazníkovi –na jednoho zákazníka se může odkazovat více objednávek –ve třídě Order – jednosměrný vztah M:1 –spojíme-li M:1/1:M vytvoříme obousměrný vztah

Vztah M:1 a 1:M Třída v Javě

Vztah 1:1 Vztah one-to-one –popisuje jednoduchý vztah mezi dvěma objekty –dvě možnosti mapování Mapování pomocí cizího klíče –možnost popisu vztahu 1:1 – speciální případ M:1 –v případě M:1 může být entita odkazována více entitami, v případě 1:1 může být pouze jednou entitou –do FK, který popisuje mapování, stačí přidat omezení, které zaručí jedinečnost => vznik 1:1 –Chceme-li vytvořit objekt, který neodkazuje na druhý objekt, databáze musí umožnit uložit více řádků s hodnotou NULL ve sloupci, který má být jedinečný

Vztah 1:1 Mapování pomocí primárního klíče –druhá možnost = mapování pomocí sdíleného PK –objekty s vazbami mezi sebou mají stejnou hodnotu PK –v tomto případě nemůžeme mezi dvěma třídami vytvořit dvě různé vazby 1:1 –vazba není popsána pomocí sloupce s FK, ale pomocí sdílení hodnoty PK => takto definovanou vazbu mezi 2 tabulkami můžeme mít jen jednou –chceme-li více vazeb – nutno využít předchozí způsob pomocí FK

Vztah M:N –nejobecnější –popisuje situaci, kdy na obou stranách vazby může být více položek –například student (Student) může pracovat na několika projektech (Project) –každý projekt může řešit více studentů

Vztah M:N Popis situace –tato def. vazba vypadá stejně jako vazba 1:M –rozdíl je ve významu této vazby ve způsobu realizace v rel. databázi –v případě vazby M:N musíme zavést novou tabulku popisující tuto vazbu –bude obsahovat odkaz do tabulky pro třídu Student a Project – takto jsme definovali jednosměrnou vazbu M:N

Vztah M:N Popis situace –chceme-li vytvořit obousměrnou vazbu M:N, přidáme odkaz na studenty do třídy popisující projekty

Strategie výběru objektu obecný problém u ORM nástrojů jako je Hibernate spočívá v ef. přístupu k rel. datům získávání objektů mnoha přístupy do databáze je nepřípustné –nejefektivnější přístup = získávání dat v podobě objektového grafu –efektivnost výběru dat pak můžeme řídit pomocí nastavení vlastností a asociací v metadatech mapování objektů na tabulky nebo vhodné strategie zpracování dotazů přímo za běhu aplikace

Strategie výběru objektu výběr objektů se řídí tzv. strategií výběru Hibernate poskytuje 4 strategie výběru –Okamžitá strategie Asociované objekty jsou vybrány okamžitě pomocí sekvenčního čtení z databáze nebo z cache –Hladová strategie Objekty a kolekce jsou vybrány společně s rodičem pomocí SQL vnějšího spojení (outer join) a další přístupy do databáze nejsou třeba –Líná strategie Objekty a kolekce jsou vybírány líně až při prvním přístupu k nim – tento přístup zapříčiní další dotaz nad databází, pokud hledaná data nejsou v cache –Dávková strategie Dokáže zvýšit výkon líné strategie – získá najednou sadu objektů/kolekcí v případě, že je líné získávání dat aktivováno

Přehled ORM nástrojů Nástroje ORM Java –Hibernate –EclipseLink –MyBatis, apod..NET –Nhibernate –iBatis, apod. PHP –CakePHP –Doctrine –FuelPHP, apod.

Příklad Hibernate Příklad Hibernate Jednoduchý příklad v Javě – pro vytvoření perzistentní pojo – značí atribut mapovaný na id v - sloupec

Příklad Hibernate - pokračování Spouštěcí třída

Příklad Hibernate - pokračování Výsledek v databázi

Děkujeme za pozornost… Zdroj: