O DAO é implementado como um objeto sem informação de estado, por padrão. Ele não armazena em cache os resultados de nenhuma execução de consulta. Isso torna os DAOs objetos leves e evita os problemas potenciais advindos do processamento concorrente ou paralelo. Por exemplo, quando uma aplicação utiliza o JDBC, o DAO encapsula toda a utilização do JDBC dentro da camada de acesso aos dados e não expõe nenhuma exceção, estrutura de dados, objetos ou interfaces que pertençam aos pacotes java.sql.* ou javax.sql.*.
A falta de estado pode também ser um problema para a aplicação, uma vez que consultas subsequentes sobre o mesmo domínio de dados podem se tornar cada vez mais lentas em função do aumento na quantidade de solicitações consecutivas combinadas ao intervalo de tempo reduzido, feitas ao servidor de aplicação. Deste modo, visando melhorar a escalabilidade da aplicação, o padrão DAO permite o uso de Cached RowSet.