Search code examples
umlclass-design

generalizing classes or not when using mapper for database


lets say i have the following classes:

customer, applicant, agency, partner

i need to work with databases and use mappers to map the objects to the database. my question is, can i generalize these classes with the class person and just implement a mapper for this class? basically it would look like this:

enter image description here

instead of this:

enter image description here

the mapper classes use orm to save and edit fields in the database, i use them because the application i am doing has to be developed further in the future.


Solution

  • If each of the classes (Partner, Applicant, etc.) has different attributes, you can't have only one mapper for all of the classes (well, you can, but then you would have to use meta-programming to retrieve information from the classes lower down the hierarchy). The solution also depends on how and who manages your database: do you have control over how it is designed or is it something that you cannot change? in the second case I would definitely use a mapper per class to allow full decoupling between DB and app. In the first case, you could use some kind of mapping hierarchy. And also, it depends on what language/frameworks you are using.

    Good Luck!