Hlavní navigace

Vlákno názorů ke článku ORM v Jet - vytváření dotazů a efektivní nahrávání dat od RS - Jasne pro zakladni veci je to "good enough"...

  • 7. 7. 2023 12:06

    RS

    Jasne pro zakladni veci je to "good enough" a sem s tim v pohode (jen to 'AND' / 'OR' tam je jak pest na oko, nedej boze ze bych mel vnorene podminky kde budu muset vnorovanim resit prioritu jednotlivich AND / OR .. to pak zacnu zanorovat pole do sebe..). Jde mi o to ze ostatni to maji jen jako jednu z moznosti takze kdyz zacnu skladat neco slozitejsiho / nedejboze aplikovat ruzne ACL filtry a pravidla tak proste sahnu pro builderu.
    Pokud naopak budu pracovat s necim kde je dotaz "staticky" tak neni nic lepsiho nez stare dobre SQL a pak pouzit naky mapper nebo prave DQL / HQL .. kde se sice musim ucit trosku odlisnou syntax (coz ale prumerne cvicena opice zvladne za 2 hodiny) ale zase mi odpadne prace s mapperem.

    Proste kazdy ten zpusob ma sve vyhody / nevyhody a vznikl za nakym ucelem. Smahem to odsoudit a tvrdit ze ostatni reseni jsou "Tedy to čemu rád říkám rovnák na ohýbák" je takove.... nevim prijde mi to proste hrozne kratkozrake.

    prece jen jednoduchy priklad

    SELECT * FROM schedule
    WHERE
    (schedule.date_from IS NULL OR schedule.date_from < :date)
    AND
    (schedule.date_to IS NULL OR schedule.date_to >= :date)
    AND
    country = :country

    vs

    [
    [
    'schedule.date_from IS NULL',
    'OR',
    'schedule.date_from <' => $date
    ]
    'AND'
    [
    'schedule.date_to IS NULL',
    'OR',
    'schedule.date_to >=' => $date
    ],
    'AND',
    'country' => $country
    ]

    Tak mam osobne celkem jasno co budu chtit cist a to mame jeste docela jednoduchuou podminku.. navic u toho prvniho retezce mi napovi IDE a okamzite me klepne pres prsty kdyz se nekde ukliknu

  • 7. 7. 2023 14:59

    BoneFlute

    V tom prvém případě ti IDE obvykle moc nepomůže, pokud to tedy není LINQ. Ale minimálně parser to odchytí.
    Ve druhém případě IDE také nic, a parser bych také nečekal, vzhledem k tomu, že to je obvykle jen technoidní prototypové řešení. Je obvyklé u ranných projektů, kdy dodavatel potřebuje dodat rychle produkt na trh a neřeší programátorskou přívětivost.

    Ideální je LINQ, protože je to čitelné, a IDE kontroluje.
    Není-li LINQ, používá se buď parsování xQL, což má výhodu maximální čitelnosti, ale IDE moc nepomůže;
    nebo builder, který má výhodu ve spolupráci s IDE, ale zase čitelnost jde dost do kopru.

    Autorem ukazované řešení má nevýhody obou a žádné výhody.