Les architectures modernes sont typiquement découpées en couches représentant des services concentriques de plus en plus haut niveau :
- Accès aux données (couche de persistance ou DAO, l'objet de ce billet),
- Traitements métiers,
- Présentation à l'utilisateur ou exposition à des systèmes tiers.
Les bonnes pratiques imposent que chacune de ces couches soit représentée par une interface exprimant le service qu'elle rend et masquant la façon dont elle est implémentée. Leur respect permet d'obtenir des architectures modulaires et faiblement couplées, facilitant le test et la maintenance des applications.
Pourtant, les ORMs remettent en cause ce schéma.