Uit puur didactisch oogpunt wil ik een object mapper gaan schrijven voor een applicatie. Dit houdt in dat er een object mapping layer komt die weer de persisentence layer aanroept (staat opzich los van de mapping). Ik heb al redelijk wat stukken er over gelezen en heb er ook al een beetje een beeld van. Mijn vraag is alleen hoe concreet te beginnen? Die artikelen schrijven namelijk wel mooi over soorten mapping (vertical, horizontal, etc..) en de theoretische basis (tuples, etc...), maar niet echt hoe zo een laag er uit moet zien. Ik heb al even gekeken naar de demo's van ORM.net (http://www.olero.com)en krijg daar wel een beetje een idee van, maar daar lijken me ook wel wat onhandige dingen in te zitten.
1) er wordt achteraf gefilterd op collections wat me voor de performance niet zo lijkt (hoe kan dit beter?)
2) de laag wil een dsn hebben (een factory pattern lijkt me handiger, dan kan je zelf tenminste je database kiezen)
3) het lijkt er op dat de business logica niet in de objecten zelf kan aangezien de objecten staan gedefinieerd in de gegenereerde laag (het creeeren en vullen van een object door de mapper lijkt me handiger)
Ik had zelf het volgende bedacht (voorbeeldje):
BLL:
class Person
--------------------------
string name
string surname
string initials
string cellularPhone
string workPhone
string homePhone
string fax
string privateEmail
string workEmail
address homeAddress
---------------------------
SavePerson() {
ObjectMapper om = new ObjectMapper();
om.SavePerson(this);
}
OR Mapping:
class ObjectMapper
-------------------------
SavePerson(Person person) {
PersistenceLayer pl = new PersistenceLayer();
pl.SavePerson(person.initials, ...);
pl.SaveAddress(person.address.street, ...);
}
De Persistence layer communiceert dus met de database die er zo uit ziet (maar kan elke willekeurige data opslag zijn):
TblPerson
---------------
string name
string surname
string initials
string cellularPhone
string workPhone
string homePhone
string fax
string privateEmail
string workEmail
TblAddress
-------------------
string street
string number
string city
string country
Nu nogmaals mijn vraag, zit ik op de goede weg, blaat ik complete onzin (ik studeer geen informatica ofzo maar heb wel interesse in gestructureerd programmeren), of is het een beetje klok en klepel idee? En hoe haal ik het beste collections op?
1) er wordt achteraf gefilterd op collections wat me voor de performance niet zo lijkt (hoe kan dit beter?)
2) de laag wil een dsn hebben (een factory pattern lijkt me handiger, dan kan je zelf tenminste je database kiezen)
3) het lijkt er op dat de business logica niet in de objecten zelf kan aangezien de objecten staan gedefinieerd in de gegenereerde laag (het creeeren en vullen van een object door de mapper lijkt me handiger)
Ik had zelf het volgende bedacht (voorbeeldje):
BLL:
class Person
--------------------------
string name
string surname
string initials
string cellularPhone
string workPhone
string homePhone
string fax
string privateEmail
string workEmail
address homeAddress
---------------------------
SavePerson() {
ObjectMapper om = new ObjectMapper();
om.SavePerson(this);
}
OR Mapping:
class ObjectMapper
-------------------------
SavePerson(Person person) {
PersistenceLayer pl = new PersistenceLayer();
pl.SavePerson(person.initials, ...);
pl.SaveAddress(person.address.street, ...);
}
De Persistence layer communiceert dus met de database die er zo uit ziet (maar kan elke willekeurige data opslag zijn):
TblPerson
---------------
string name
string surname
string initials
string cellularPhone
string workPhone
string homePhone
string fax
string privateEmail
string workEmail
TblAddress
-------------------
string street
string number
string city
string country
Nu nogmaals mijn vraag, zit ik op de goede weg, blaat ik complete onzin (ik studeer geen informatica ofzo maar heb wel interesse in gestructureerd programmeren), of is het een beetje klok en klepel idee? En hoe haal ik het beste collections op?
Panacea.NL als je geinteresserd bent in IT en Geneeskunde!