Data access object

In software, a data access object (DAO) is a pattern that provides an abstract interface to some type of database or other persistence mechanism.

By mapping application calls to the persistence layer, the DAO provides data operations without exposing database details.

This can range from a fairly simple interface that separates data access from the application logic, to frameworks and commercial products.

Popular open source ORM software includes Doctrine, Hibernate, iBATIS and JPA implementations such as Apache OpenJPA.

Developers may inadvertently make multiple database queries to retrieve information that could be returned in a single operation.