Jak se vyznat v Nette db knihovnách (core, explorer, nextras, dbal, orm, notorm, dibi atd)

nightoul
Člen | 10
+
0
-

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 | 1146
+
+4
-

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
+
0
-

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 | 96
+
+1
-

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 | 1146
+
+4
-

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)