Object persistence terminology: 'repository' vs. 'store' vs. 'context' vs. 'retriever' vs. (...)

Viewed 10765

I'm not sure how to name data store classes when designing a program's data access layer (DAL).

(By data store class, I mean a class that is responsible to read a persisted object into memory, or to persist an in-memory object.)

It seems reasonable to name a data store class according to two things:

  • what kinds of objects it handles;
  • whether it loads and/or persists such objects.

⇒ A class that loads Banana objects might be called e.g. BananaSource.

I don't know how to go about the second point (ie. the Source bit in the example). I've seen different nouns apparently used for just that purpose:

  • repository: this sounds very general. Does this denote something read-/write-accessible?
  • store: this sounds like something that potentially allows write access.
  • context: sounds very abstract. I've seen this with LINQ and object-relational mappers (ORMs).
    P.S. (several months later): This is probably appropriate for containers that contain "active" or otherwise supervised objects (the Unit of Work pattern comes to mind).
  • retriever: sounds like something read-only.
  • source & sink: probably not appropriate for object persistence; a better fit with data streams?
  • reader / writer: quite clear in its intention, but sounds too technical to me.

Are these names arbitrary, or are there widely accepted meanings / semantic differences behind each? More specifically, I wonder:

  • What names would be appropriate for read-only data stores?
  • What names would be appropriate for write-only data stores?
  • What names would be appropriate for mostly read-only data stores that are occasionally updated?
  • What names would be appropriate for mostly write-only data stores that are occasionally read?
  • Does one name fit all scenarios equally well?
1 Answers
Related