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

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
  • 4.
  • 5.
    Přehled Table DataGateway 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
  • 7.
  • 8.
    RowData Gateway Jedenřádek tabulky nebo pohledu Základní CRUD Doménový objekt jen obaluje data a business logiku 8
  • 9.
  • 10.
    Data Mapper Přístupk objektu i databázi Doménový objekt ◦nemá žádný CRUD ◦je zcela nezávislý ◦jen obaluje data a business logiku 10
  • 11.
  • 12.
    ActiveRecord Obsahuje dataa business logiku CRUD operace přímo na objektu Jednoduchý na implementaci 12
  • 13.
  • 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
  • 16.
  • 17.
    Implementace Neznamená použítDoctrine Neznamená použít jiný framework Neznamená generovat databázi nebo model Znamená dodržovat principy 17
  • 18.
    Kam s filtrováníma ř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 jeháč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
  • 21.
  • 22.