1.1 - Estrutura
Abaixo apresentamos um diagrama de classes (estruturas em UML) simplificado do padrão DAO.
O Client é um objeto que requer o acesso à fonte de dados. Ele pode ser um Business Object, um Session Façade, um Application Serices, um Value List Handler, um Transfer Object Assembler, ou qualquer outro objeto auxiliar (Helper Object) que precise acessar os dados persistentes.
O DataAccessObject é o objeto de função principal desse padrão. Ele abstrai a implementação de acesso a dados subjacente para o cliente a fim de permitir um acesso transparente a fonte de dados. O referido objeto implementa os métodos de criação (insert), consulta (select), atualização (update) e exclusão (delete). Esse conjunto de métodos que permitem a realizam de tais operações são conhecidos pela sigla CRUD (create, retrieve, update e delete).
O DataSource represente uma implementação da fonte de dados que pode ser, por exemplo, um SGBD relacional ou quaisquer outros mecanismos/sistema/serviço de armazenamento persistente.
O ResultSet representa o resultado de uma execução de um comando na fonte de dados. Por exemplo, para a API JDBC, essa função é desempenhada pela interface java.sql.ResultSet.
O Data representa um objeto de transferência usado como um carregador de dados. Esse objeto não somente pode ser utilizado, como deve ser utilizado para permitir a comunicação bidirecional entre a camada de persistência e as demais camadas do aplicativo. Uma das funções essenciais desse objeto é o de criar um baixo acoplamento tornando a interface mais flexível entre a camada de persistência e os clients. Esse objeto pode ser representado pelos JavaBeans ou pelos POJO’s (Plain Old Java Object).