In
computer software, a
data access object (
DAO) is an
object that provides an abstract
interface to some type of
database or other persistence mechanism. By mapping application calls to the persistence layer, DAO provide some specific data operations without exposing details of the database. This isolation supports the
Single responsibility principle. It separates what data accesses the application needs, in terms of domain-specific objects and data types (the public interface of the DAO), from how these needs can be satisfied with a specific
DBMS, database schema, etc. (the implementation of the DAO).