Stel, je hebt een repository; bv CustomerRepository.
Deze Repository heeft een method 'getCustomer(int id)'.
Deze methode haalt de customer die overeenkomt met het gegeven id uit een persistance bron (bv uit een database).
Nu moet die repository daar een Customer domein object rond maken.
Hoe doe je dit, of welke manier verkies jij ?
Heb je bv. in je domein object een method 'Initialize( dataset d )', die je vanuit je repository aanroept ?
Die initialize krijgt dan bv een (typed) dataset/table/recordset mee, en die je gebruik je dan in die method om je object mee te 'populaten'.
Het voordeel hiervan is, dat je dan direct aan de private members van je domein object kan om deze hun waarde te gaan geven.
Een nadeel is, dat je dan een (typed) dataset nodig hebt.
Of, ga je in je repository je domein object mbhv reflection gaan initializeren ? Het nadeel hiervan is natuurlijk dat reflection wat trager is, en dat je eigenlijk ook 'untyped' gaat werken. At compile time ga je nl. niet weten of je de member-names wel correct gespeld hebt.
Deze Repository heeft een method 'getCustomer(int id)'.
Deze methode haalt de customer die overeenkomt met het gegeven id uit een persistance bron (bv uit een database).
Nu moet die repository daar een Customer domein object rond maken.
Hoe doe je dit, of welke manier verkies jij ?
Heb je bv. in je domein object een method 'Initialize( dataset d )', die je vanuit je repository aanroept ?
Die initialize krijgt dan bv een (typed) dataset/table/recordset mee, en die je gebruik je dan in die method om je object mee te 'populaten'.
Het voordeel hiervan is, dat je dan direct aan de private members van je domein object kan om deze hun waarde te gaan geven.
Een nadeel is, dat je dan een (typed) dataset nodig hebt.
Of, ga je in je repository je domein object mbhv reflection gaan initializeren ? Het nadeel hiervan is natuurlijk dat reflection wat trager is, en dat je eigenlijk ook 'untyped' gaat werken. At compile time ga je nl. niet weten of je de member-names wel correct gespeld hebt.
https://fgheysels.github.io/