ORM DataModel
DataModel je ORM systém integrovaný do Jet. Definice ORM říká, že zajišťuje konverzi dat mezi relační databází a objektově orientovanou aplikací. Ta definice je přesná, ale já bych k tomu dodal, že to především opravdu hodně usnadňuje práci a zejména eliminuje tu práci, která je opravdu otravná. Jet DataModel z daleka jen nezajišťuje konverzi dat mezi objekty a databází. I když je to funkce základní a důležitá, tak toho umí mnohem víc:
- Definice a datové modelování a k tomu určené nástroje v rámci Jet Studia
- Generování formulářů na základě datových modelů. To není sice věc Jet DataModel, ale subsystému formulářů, ovšem v praxi je používáno obé společně.
- Možnost přímo vytvářet REST API nad datovými modely.
- Zatím je integrován backend pouze pro MySQL / MariaDB a SQLit, ale experimentálně existoval i backend pro Oracle a MS SQL - je možné vytvořit backend pro libovolné moderní relační databáze (momentálně nejsou jiné backendy veřejnou součástí Jet, ale tato možnost byla prakticky ověřena).
- Správně navrženou a vyvinutou aplikaci je možné provozovat na různých relačních databázích.
- Jak již bylo řečeno, tak datové modely není nutné navrhovat ručně, ale můžete používat k tomu určený nástroj, který je součástí Jet Studia. To velice zefektivňuje práci.
- Pokud budete vytvářet modulární aplikace, tak Jet Studio nabízí možnost rovnou nad datovým modelem vygenerovat administrační modul pro správu dat (prohlížení, přidávání, úprava a mazání dat včetně logování operací a kontroly oprávnění). Základ určité funkcionality tedy můžete mít hotový za pár minu - doslova.
- Snadnější a velice efektivní tvorba dotazů.
A co Jet DataModel není? Není to ORM, které by se snažilo pokrýt všechny funkce a možnosti všech relačních databází. Tak tomu není. Jak stále říkám, tak relační databáze je pro online aplikaci skvělý sluha, ale krutý pán. Právě v práci s databází bývá často úzké hrdlo a zdroj problémů. Proto je Jet DataModel navržen tak, aby s v něm vytvořenými datovými modely bylo možné pracovat rychle a efektivně. Aby se už z principu pokud možno minimalizovat počet dotazů (hlavně těch při čtení) a celkově aby vše bylo transparentní a podle daného principu. Proto DataModel opravdu neobsahuje abstrakci všechmožných fines a "fičurek" relačních databází a je to záměr.
Datové modely je nutné navrhnout podle určitého principu, který je však vlastně zcela logický a transparentní.
A v neposlední řadě při použití Jet DataModel nezačíná práci tvorbou tabulek, ale tvorbou tříd, jejich vlastností a vzájemných vztahů a až na základě této definice se teprve vytváří databázové tabulky ve zvoleném relačně databázovém systému.
Rovněž se dá říct, že Jet DataModel přebírá trochu filozofie NoSQL. Právě tím, že nehledí na data primárně jako na tabulky, ale jako na datové entity reprezentované třídami. Každá taková entita má určitou podobu / strukturu a mezi němi jsou určité vztahy a jsou vždy reprezentovány třídami. To je primární pohled. To že je to uloženo v tabulkách je "věc na pozadí", ale již ne alfou a omegou.
Pro někoho to může být malinko jiný způsob uvažování, ale ve skutečnosti to není nic revolučního a vše vychází z mých dlouholetých zkušeností. Jet DataModel používám řadu let (během kterých jsem jej také postupně vylepšival) a s radostí mohu říct, že se mi naprosto vždy plně osvědčil. Vždy mi usnadnil práci a nenarazil jsem na žádné faktické omezení. Věřím, že takto bude sloužit i vám. Však už jen to, že si modley "naklikáte" (viz Jet Studio) a rovnou máte vyřešenou velkou část rutinní práce je opravdu moc fajn.
Nyní se prosím seznamte s principem modelování v Jet DataModel.