domain driven design - With repository pattern, should I check first if the object queried exists in memory before it makes an actual database call -


i have repository, example, userrepository. returns user given userid. work on web application, objects loaded memory, used, , disposed when request ends.

so far, when write repository, retrieved data database. don't store retrieved user object memory (i mean in collection of repository). when repository's getbyid() method called, don't check if object in collection. query database.

my questions are

  1. should store retrieved objects in memory, , when repository's method called, should check if object exists in memory first before make database call?
  2. or memory collection unnecessary, web request short-lived session , objects disposed afterward

1) should store retrieved objects in memory, , when repository's method called, should check if object exists in memory first before make database call?

since repository should abstracted enough simulate purpose of in-memory collection, think , use case.

if store object after being retrieved database end-up implementation of so-called identitymap. if this, can complicated (well depends on domain).

depending on infrastructure layer rely on, may use identitymap provided orm if any.

but real question is, worth implementing identitymap?

i mean, agree repeating query may wrong 2 reasons, performance , integrity, here quote of martin fowler:

an old proverb says man 2 watches never knows time is. if 2 watches confusing, can in bigger mess loading objects database.

but need pragmatic , load them every time need it.

2) or memory collection unnecessary, web request short-lived session , objects disposed afterward

it depends™, example, in case may have play object in different place, in case, may worth, let's need refresh user session identity loading user database, there cases once within whole request.


Comments