Autor Téma: Jedna transakcia - kde a ako juj vytvoriť  (Přečteno 275 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5615
  • Karma: 42
    • Verze Delphi: W10 + Delphi 10.4 professional
Jedna transakcia - kde a ako juj vytvoriť
« kdy: 08-11-2020, 21:16:31 »
Pre výpočet potrebujem použiť jedinú transakciu. Doteraz som používal transakciu z DataModul-u. Tých Query je veľa (> 80). Na základe diskusie teraz všade inde pre TQuery vytváram transakcie dynamicky a po použití ich ničím. Neviem ako sa rozhodnúť:
  • Naďalej používať transakciu z DataModul-u
  • V jednotke definovať v časti interface premennú MyTran: TFDTransaction. Tú potom inicializovať v časti initialization a zničiť v časti finalization
Aký je váš názor?
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3119
  • Karma: 136
    • Verze Delphi: D2007, XE3, DX10
Re:Jedna transakcia - kde a ako juj vytvoriť
« Odpověď #1 kdy: 09-11-2020, 07:47:31 »
Decouplovane reseni je vytvaret transakci dynamicky tam, kde se zahajuje/ukoncuje a predavat ji jako parametr. A nejhorsi, ne-li nesmyslne reseni, je dat ji do sekce inicializace modulu, protoze transakce existuje v kontextu nejakeho DB spojeni.

Initalization/Finalization unit je pohrobek modularniho programovani a melo by se pouzivat dost uvazlive, pokud vubec.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5615
  • Karma: 42
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Jedna transakcia - kde a ako juj vytvoriť
« Odpověď #2 kdy: 09-11-2020, 08:39:55 »
Decouplovane reseni je vytvaret transakci dynamicky tam, kde se zahajuje/ukoncuje a predavat ji jako parametr. A nejhorsi, ne-li nesmyslne reseni, je dat ji do sekce inicializace modulu, protoze transakce existuje v kontextu nejakeho DB spojeni.

Initalization/Finalization unit je pohrobek modularniho programovani a melo by se pouzivat dost uvazlive, pokud vubec.
Práve preto som sa pýtal, že som si niečo také zapamätal.
Ono to je trochu zložitejšie. Mám na sebe dve závislé triedy a tie používam ako rodičov pre ostatné (výpočtové) triedy. Zjednodušene: pri každom Create by som vždy vytvoril novú transakciu.
Nad parametrom som veľmi nerozmýšľal.
Hm, mám triedu, ktorá tie výpočtové triedy používa. Tam by to snáď malo ísť. Alebo ten DataModul. Idem to analyzovať.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3119
  • Karma: 136
    • Verze Delphi: D2007, XE3, DX10
Re:Jedna transakcia - kde a ako juj vytvoriť
« Odpověď #3 kdy: 09-11-2020, 14:02:39 »
Hm, mám triedu, ktorá tie výpočtové triedy používa. Tam by to snáď malo ísť. Alebo ten DataModul. Idem to analyzovať.
Taky je otazka, jak vypada zbytek aplikace, protoze ta by mela byt konizstentni a jedeen typ problemu by se mel resit vsude stejne. Takze jestli pouzivas DataModuly, tak asi nema smysl se zabyvat nejakou decouplovanou variantou, pokud nemas na zreteli, ze ten kod znovupouzijes nekde jinde...

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5615
  • Karma: 42
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Jedna transakcia - kde a ako juj vytvoriť
« Odpověď #4 kdy: 09-11-2020, 14:49:10 »
Podľa odporúčaní som prijal zásadu, že všetky Query budú mať dynamicky priraďovanú Transaction. To to je všetko. Na DataModul-e mám jedinú transakciu. A to pre tabuľky. Dôvod je jednoduchý: aby som s nimi mohol v čase návrhu pracovať v plnom rozsahu možností, ktoré mi ponúkajú. To ponechávam tak ako to je. Viď prílohu.
Transakcia fdtrManual ide von.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 368
  • Karma: 9
    • Verze Delphi: XE2
Re:Jedna transakcia - kde a ako juj vytvoriť
« Odpověď #5 kdy: 09-11-2020, 15:40:53 »
Podľa odporúčaní som prijal zásadu, že všetky Query budú mať dynamicky priraďovanú Transaction. To to je všetko.
IMHO je dost velký rozdíl mezi dynamicky přiřazovanou transakcí a dynamicky vytvářenou transakcí ..

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5615
  • Karma: 42
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Jedna transakcia - kde a ako juj vytvoriť
« Odpověď #6 kdy: 09-11-2020, 15:42:43 »
Ako vždy nepresné vyjadrovanie. Transakcie sú dynamicky vytvárané.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.