Data mapper pattern
From CSSEMediaWiki
A layer of Mappers that moves data between objects and a database while keeping them independent of each other and the mapper itself
How it works
A separate class works as a bridge between in-memory objects and the underlying (relational) database. The domain objects have no SQL interface code and no understanding of the database backend.
When to use it
When the database schema and object models differ and evolve independently. Objects can be designed and changed without consideration to the database (and only the mapper).