Ik zou graag willen weten hoe jullie het volgende doen en wat de beste methode hiervoor is.
Ik werk met Interbase/Firebird en gebruik de IBX componenten.
Nu heb bij een project een DataModule waarop ik een Database componentje plaats met een daarbij horende transactie componentje. Verder heb ik een X aantal query componentjes met ook ieder een eigen transactie component.
Het probleem met deze constructie is dat je goed moet oppassen dat procedure A een bepaald type query component gebruikt en dat binnen procedure A geen andere procedure's aangeroepen worden die ook gebruik maken van diezelfde query.
Daarom vraag ik me af of het niet beter is om gewoon alle query componentjes dynamisch aan te maken tijdens runtime. Dus dat iedere procedure zijn eigen query en transactie component aanmaakt en bij het verlaten van die procedure weer vrijgeeft.
Een ander voordeel hiervan is dat je steeds begint met een nieuwe transactie. Als je nu een bepaald query component tijdens designtime aangemaakt heb en die vervolgens overal gebruikt, moet je er goed voor zorgen dat die wel steeds de transactie rollbackt of commit. (Nu heb ik dus overal waar een error ontstaat tijdens een query actie in de exception staan, dat die de transactie moet rollbacken). Als je dat niet zou doen, zou je geen gewijzigde gegevens meer zien.
Kortom graag hoor ik jullie mening over wat nu het beste is.
Ik werk met Interbase/Firebird en gebruik de IBX componenten.
Nu heb bij een project een DataModule waarop ik een Database componentje plaats met een daarbij horende transactie componentje. Verder heb ik een X aantal query componentjes met ook ieder een eigen transactie component.
Het probleem met deze constructie is dat je goed moet oppassen dat procedure A een bepaald type query component gebruikt en dat binnen procedure A geen andere procedure's aangeroepen worden die ook gebruik maken van diezelfde query.
Daarom vraag ik me af of het niet beter is om gewoon alle query componentjes dynamisch aan te maken tijdens runtime. Dus dat iedere procedure zijn eigen query en transactie component aanmaakt en bij het verlaten van die procedure weer vrijgeeft.
Een ander voordeel hiervan is dat je steeds begint met een nieuwe transactie. Als je nu een bepaald query component tijdens designtime aangemaakt heb en die vervolgens overal gebruikt, moet je er goed voor zorgen dat die wel steeds de transactie rollbackt of commit. (Nu heb ik dus overal waar een error ontstaat tijdens een query actie in de exception staan, dat die de transactie moet rollbacken). Als je dat niet zou doen, zou je geen gewijzigde gegevens meer zien.
Kortom graag hoor ik jullie mening over wat nu het beste is.