SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
ORM 
Vzory mapování a možnosti jejich implementace 
Martin Štekl 
@stekycz 
martin.stekl@gmail.com 
30.3.2013 
1
Co je ORM? 
Object-relationalmapping 
Programovací technika 
Mapování dat do objektů z 
◦Databáze 
◦Souborů 
◦REST/SOAP 
◦Jiného úložiště 
2
Databáze 
Data 
◦Tabulky (číselníky, data, cizí klíče, …) 
◦Pohledy 
Logika 
◦Triggery 
◦Funkce 
3
ZÁKLADNÍ VZORY 
4
Přehled 
Table Data Gateway 
RowData Gateway 
Data Mapper 
ActiveRecord 
Martin Fowler, PatternsofEnterpriseApplicationArchitecture 
5
Table Data Gateway 
Jedna tabulka nebo pohled 
Základní CRUD 
Doménový objekt jen obaluje data a business logiku 
Pracuje s kolekcemi položek 
6
Table Data Gateway 
7
RowData Gateway 
Jeden řádek tabulky nebo pohledu 
Základní CRUD 
Doménový objekt jen obaluje data a business logiku 
8
RowData Gateway 
9
Data Mapper 
Přístup k objektu i databázi 
Doménový objekt 
◦nemá žádný CRUD 
◦je zcela nezávislý 
◦jen obaluje data a business logiku 
10
Data Mapper 
11
ActiveRecord 
Obsahuje data a business logiku 
CRUD operace přímo na objektu 
Jednoduchý na implementaci 
12
ActiveRecord 
13
Přístup k datům 
Data accesslayer(DAL) 
◦vrstva pro přístup k persistentním datům 
Data accessobject(DAO) 
◦abstraktní rozhraní pro DAL 
◦každá doména by měla mít vlastní 
Data transfer object(DTO) 
◦přenos dat mezi různými částmi aplikace 
◦může se jednat o doménový objekt 
14
Data accessobject 
Jednotné rozhraní (CRUD?) 
Co všechno má obsahovat? 
◦Základní přístup k datům 
◦Business logiku? 
◦Komunikaci s jinými DAO? 
Lze použít jako službu v Nette? 
15
NĚCO ZAJÍMAVĚJŠÍHO 
16
Implementace 
Neznamená použít Doctrine 
Neznamená použít jiný framework 
Neznamená generovat databázi nebo model 
Znamená dodržovat principy 
17
Kam s filtrováním a řazením? 
Přímo v kódu 
Parametry metod 
PipesandFilters 
18
Je to efektivní? 
Záleží na implementaci 
Optimalizace dotazů 
◦Zbytečné JOINy 
Transakce 
◦Automatické 
◦Manuální 
◦Bez transakcí 
19
V čem je háček? 
Data z více různých úložišť 
Cizí klíče (MyISAM) 
Nepřímé vazby 
Cache 
Potřeba psát vlastní SQL dotazy? 
Záleží na databázi, implementaci a požadavcích 
20
UKÁZKY KÓDU 
21
DĚKUJI ZA POZORNOST 
22

Contenu connexe

Similaire à ORM

Matedatový sklad
Matedatový skladMatedatový sklad
Matedatový skladProfinit
 
Prague data management meetup 2016-09-22
Prague data management meetup 2016-09-22Prague data management meetup 2016-09-22
Prague data management meetup 2016-09-22Martin Bém
 
Jak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyJak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyLukáš Petrlík
 
Data Science a MLOps v prostředí cloudu
Data Science a MLOps v prostředí clouduData Science a MLOps v prostředí cloudu
Data Science a MLOps v prostředí clouduProfinit
 
Prague data management meetup 2017-10-24
Prague data management meetup 2017-10-24Prague data management meetup 2017-10-24
Prague data management meetup 2017-10-24Martin Bém
 
20180321 profinit zpracovani velkych_dat_v_praxi
20180321 profinit zpracovani velkych_dat_v_praxi20180321 profinit zpracovani velkych_dat_v_praxi
20180321 profinit zpracovani velkych_dat_v_praxiProfinit
 
Domain-Driven Design Sraz 6.6.2018
Domain-Driven Design Sraz 6.6.2018Domain-Driven Design Sraz 6.6.2018
Domain-Driven Design Sraz 6.6.2018Svatopluk Šimara
 
Semináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních datSemináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních datJaroslav Prodelal
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaJan Hřídel
 
Pracovní snídaně: Zavádíme integrační platformu v 75 minutách
Pracovní snídaně: Zavádíme integrační platformu v 75 minutáchPracovní snídaně: Zavádíme integrační platformu v 75 minutách
Pracovní snídaně: Zavádíme integrační platformu v 75 minutáchProfinit
 
Tutoriál : Otevřená a propojitelná data veřejné správy
Tutoriál : Otevřená a propojitelná data veřejné správyTutoriál : Otevřená a propojitelná data veřejné správy
Tutoriál : Otevřená a propojitelná data veřejné správyMartin Necasky
 
Revoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světěRevoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světěMarketingArrowECS_CZ
 
Semantický web a Drupal
Semantický web a Drupal Semantický web a Drupal
Semantický web a Drupal devmates
 
Odborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileOdborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileProfinit
 
McAfee - ochrana dat, DLP, šifrování, database security
McAfee - ochrana dat, DLP, šifrování, database securityMcAfee - ochrana dat, DLP, šifrování, database security
McAfee - ochrana dat, DLP, šifrování, database securityMarketingArrowECS_CZ
 

Similaire à ORM (20)

Matedatový sklad
Matedatový skladMatedatový sklad
Matedatový sklad
 
SAS - Integrace dat
SAS - Integrace datSAS - Integrace dat
SAS - Integrace dat
 
Prague data management meetup 2016-09-22
Prague data management meetup 2016-09-22Prague data management meetup 2016-09-22
Prague data management meetup 2016-09-22
 
Jak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyJak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache Derby
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
Data Science a MLOps v prostředí cloudu
Data Science a MLOps v prostředí clouduData Science a MLOps v prostředí cloudu
Data Science a MLOps v prostředí cloudu
 
Prague data management meetup 2017-10-24
Prague data management meetup 2017-10-24Prague data management meetup 2017-10-24
Prague data management meetup 2017-10-24
 
20180321 profinit zpracovani velkych_dat_v_praxi
20180321 profinit zpracovani velkych_dat_v_praxi20180321 profinit zpracovani velkych_dat_v_praxi
20180321 profinit zpracovani velkych_dat_v_praxi
 
Domain-Driven Design Sraz 6.6.2018
Domain-Driven Design Sraz 6.6.2018Domain-Driven Design Sraz 6.6.2018
Domain-Driven Design Sraz 6.6.2018
 
Semináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních datSemináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních dat
 
CQRS v rohlik.cz
CQRS v rohlik.czCQRS v rohlik.cz
CQRS v rohlik.cz
 
Možnosti databázové komprese
Možnosti databázové kompreseMožnosti databázové komprese
Možnosti databázové komprese
 
KST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáškaKST/ICSHP - 1. přednáška
KST/ICSHP - 1. přednáška
 
Sexy infrastruktura
Sexy infrastrukturaSexy infrastruktura
Sexy infrastruktura
 
Pracovní snídaně: Zavádíme integrační platformu v 75 minutách
Pracovní snídaně: Zavádíme integrační platformu v 75 minutáchPracovní snídaně: Zavádíme integrační platformu v 75 minutách
Pracovní snídaně: Zavádíme integrační platformu v 75 minutách
 
Tutoriál : Otevřená a propojitelná data veřejné správy
Tutoriál : Otevřená a propojitelná data veřejné správyTutoriál : Otevřená a propojitelná data veřejné správy
Tutoriál : Otevřená a propojitelná data veřejné správy
 
Revoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světěRevoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světě
 
Semantický web a Drupal
Semantický web a Drupal Semantický web a Drupal
Semantický web a Drupal
 
Odborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileOdborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum Mobile
 
McAfee - ochrana dat, DLP, šifrování, database security
McAfee - ochrana dat, DLP, šifrování, database securityMcAfee - ochrana dat, DLP, šifrování, database security
McAfee - ochrana dat, DLP, šifrování, database security
 

ORM

  • 1. ORM Vzory mapování a možnosti jejich implementace Martin Štekl @stekycz martin.stekl@gmail.com 30.3.2013 1
  • 2. Co je ORM? Object-relationalmapping Programovací technika Mapování dat do objektů z ◦Databáze ◦Souborů ◦REST/SOAP ◦Jiného úložiště 2
  • 3. Databáze Data ◦Tabulky (číselníky, data, cizí klíče, …) ◦Pohledy Logika ◦Triggery ◦Funkce 3
  • 5. Přehled Table Data Gateway RowData Gateway Data Mapper ActiveRecord Martin Fowler, PatternsofEnterpriseApplicationArchitecture 5
  • 6. Table Data Gateway Jedna tabulka nebo pohled Základní CRUD Doménový objekt jen obaluje data a business logiku Pracuje s kolekcemi položek 6
  • 8. RowData Gateway Jeden řádek tabulky nebo pohledu Základní CRUD Doménový objekt jen obaluje data a business logiku 8
  • 10. Data Mapper Přístup k objektu i databázi Doménový objekt ◦nemá žádný CRUD ◦je zcela nezávislý ◦jen obaluje data a business logiku 10
  • 12. ActiveRecord Obsahuje data a business logiku CRUD operace přímo na objektu Jednoduchý na implementaci 12
  • 14. Přístup k datům Data accesslayer(DAL) ◦vrstva pro přístup k persistentním datům Data accessobject(DAO) ◦abstraktní rozhraní pro DAL ◦každá doména by měla mít vlastní Data transfer object(DTO) ◦přenos dat mezi různými částmi aplikace ◦může se jednat o doménový objekt 14
  • 15. Data accessobject Jednotné rozhraní (CRUD?) Co všechno má obsahovat? ◦Základní přístup k datům ◦Business logiku? ◦Komunikaci s jinými DAO? Lze použít jako službu v Nette? 15
  • 17. Implementace Neznamená použít Doctrine Neznamená použít jiný framework Neznamená generovat databázi nebo model Znamená dodržovat principy 17
  • 18. Kam s filtrováním a řazením? Přímo v kódu Parametry metod PipesandFilters 18
  • 19. Je to efektivní? Záleží na implementaci Optimalizace dotazů ◦Zbytečné JOINy Transakce ◦Automatické ◦Manuální ◦Bez transakcí 19
  • 20. V čem je háček? Data z více různých úložišť Cizí klíče (MyISAM) Nepřímé vazby Cache Potřeba psát vlastní SQL dotazy? Záleží na databázi, implementaci a požadavcích 20