Jak se vyznat v Nette db knihovnách (core, explorer, nextras, dbal, orm, notorm, dibi atd)
- nightoul
- Člen | 10
Ahoj, chtěl bych se prosím zeptat zcela obecně k tématu database
abstraction layers (DBAL) vs ORM a to v souvislosti s Nette.
V tomto článku o nejlepších PHP ORMkách – https://www.slant.co/…39/~php-orms – je zařazeno také
Nette, Nette Database 3.0 a Nextras ORM, každé zvlášť. Mám trochu zmatek
v tom, co je co. Je to to samé, pouze Nextras je prostě jen
nejaktuálnější produkt? Případně, co vlastně považovat za ORM a co za
DBAL (např. o Database Core se na doc.nette.org píše jako o DBAL a ne ORM).
Je potom Nette Explorer také DBAL anebo ORM? Lze je vůbec oddělit, tedy
říct, že něco je DBAL a něco zase ORM nebo to splývá? PHP PDO není ani
DBAL a už vůbec ne ORM? Atd.
Vím, že se tomuto tématu věnují jiná vlákna, ale toto by mohlo sloužit
pro začátečníky, kteří se ani neorientují v těchto různých
knihovnách.
Editoval nightoul (27. 1. 2022 17:16)
- Marek Bartoš
- Nette Blogger | 1280
Na tom webu mají bordel. Nette je sada knihoven, Nette Database je ta
z nich, která se stará o databázi a 3.0 je jen verze.
Nette Database se dělí na Core a na Explorer.
Core je to, co se označuje DBAL – jde o vrstvu pro přístup
k databázi.
Explorer je konceptuelně blízko ORM, ale nenabízí vše, co ORM běžně
mají. Obojí ti dovoluje procházet tabulky v databázi jako běžné php
objekty a SQL dotazy pokládají na pozadí za tebe, ORM navíc data mapují na
tebou definované type-safe objekty
- nightoul
- Člen | 10
Super, díky. Takže pokud chápu, tak PDO je nejnižší vrstva, která je
tam vždycky. Nad PDO je DBAL, což je v našem případě Nette Database Core
a nad tím případně ještě může být ORM, v našem případě Explorer.
S tím, že je možné si vystačit bez ORM, ale DBAL je asi dobré mít
vždycky. Zároveň Core i Explorer je možné a asi i běžné mít oboje
připojené v jednom projektu a míchat to.
A je Nette Extras něco, co nahrazuje ať už Core nebo Explorer anebo to
dělá úplně jiné věci?
- Václav Pávek
- Backer | 101
Nextras ORM + Nextras DBAL jsou knihovny od jiného tvůrce tj. jedná se o alternativu k Nette Database (Core a Explorer) kterou můžeš a nemusíš použít. Výhodou Nextras ORM je, že ti mapuje tabulky na entity (objekty). V Nette je jakákoli tabulka reprezentována obecnou entitou ActiveRow.
Editoval Václav Pávek (31. 1. 2022 18:30)
- Marek Bartoš
- Nette Blogger | 1280
Chápeš to téměř přesně
- PDO (nebo jiný databázový driver – například k MySQL se dá připojit přes PDO nebo mysqli) je tam vždy
- DBAL je nadstavba nad databázovým driverem, která zjednodušuje problémy jako je escapování parametrů
- ORM a not-ORM používají prakticky výhradně DBAL (ale mohly by použít i PDO nebo i data mapovat do PHP pole) a umožňují ti nepsat SQL dotazy, generují je
- ORM ti navíc mapuje data na type-safe objekty
nextras/dbal je alternativa k nette/database core (dbal)
nextras/orm je alternativa k nette/database explorer (not-ORM)
Zabíhat do úplných detailů, tak se dá s databází komunikovat ještě víc nízkoúrovňově a nepoužívat ani PDO, ale na to v praxi (snad) nenarazíš.
Editoval Marek Bartoš (31. 1. 2022 18:47)