1
resposta

Diferença entre DAO e DAL com mais detalhes

Data Access Layer (DAL)

Definição:

  • DAL é uma camada completa da arquitetura da aplicação que abstrai e gerencia o acesso aos dados de forma centralizada. Ela pode incluir várias classes e componentes que trabalham juntos para realizar operações de banco de dados.

Objetivo:

  • Proporcionar uma interface unificada e simplificada para a camada de aplicação interagir com o banco de dados.
  • Encapsular toda a lógica de acesso aos dados em um lugar central, facilitando a manutenção e a reutilização do código.

Exemplo de uso:

  • Você pode ter uma classe ArtistaDAL que gerencia todas as operações de banco de dados relacionadas aos artistas.
  • A DAL pode incluir outras classes para outras entidades, como AlbumDAL, MusicaDAL, etc.

Data Access Object (DAO)

Definição:

  • DAO é um padrão de design específico para representar uma entidade específica e suas operações de banco de dados. Cada DAO é responsável por gerenciar a persistência e recuperação de dados de uma única entidade.

Objetivo:

  • Encapsular todas as operações de banco de dados relacionadas a uma única entidade em uma classe.
  • Prover uma interface clara e específica para manipular os dados de uma entidade.

Exemplo de uso:

  • Você teria uma classe ArtistaDAO que trata apenas das operações de banco de dados relacionadas à entidade Artista.
  • Outras entidades, como Album ou Musica, teriam suas próprias classes DAO, como AlbumDAO e MusicaDAO.

Comparação

  • DAL (Data Access Layer) é uma camada inteira que pode conter múltiplos DAOs, serviços e utilitários para acesso aos dados. Foca na abstração do acesso ao banco de dados e pode lidar com múltiplas entidades e tipos de fontes de dados.

  • DAO (Data Access Object) é um componente específico dentro da DAL que trata de uma entidade particular. Cada DAO é uma classe dedicada a operações de CRUD (Create, Read, Update, Delete) para uma entidade específica.

Qual usar?

  • Se você está implementando uma classe que lida com todas as operações de banco de dados para uma única entidade, como Artista, o nome ArtistaDAO é mais apropriado.

  • Se você está construindo uma camada inteira que abstrai e gerencia o acesso aos dados, incluindo múltiplas entidades e possivelmente várias classes para lidar com diferentes aspectos do acesso aos dados, então você está criando uma DAL.

Vamos implementar um exemplo onde temos tanto uma camada DAL quanto classes DAO para diferentes entidades. A ideia é ter uma arquitetura organizada onde a DAL fornece a infraestrutura para acesso ao banco de dados e as classes DAO lidam com as operações específicas para cada entidade.

DataAccessLayer.cs (DAL)


    public class DataAccessLayer
    {
     
        public IEnumerable<Artista> ListarArtistas()
        {
            var artistaDAO = new ArtistaDAO(_connection);
            return artistaDAO.Listar();
        }

        public void AdicionarArtista(Artista artista)
        {
            var artistaDAO = new ArtistaDAO(_connection);
            artistaDAO.Adicionar(artista);
        }

        public IEnumerable<Album> ListarAlbuns()
        {
            var albumDAO = new AlbumDAO(_connection);
            return albumDAO.Listar();
        }

        public void AdicionarAlbum(Album album)
        {
            var albumDAO = new AlbumDAO(_connection);
            albumDAO.Adicionar(album);
        }

ArtistaDAO.cs (DAO)

namespace ScreenSound5.Banco
{
    using Microsoft.Data.SqlClient;
    using ScreenSound.Modelos;
    using System.Collections.Generic;

    internal class ArtistaDAO
    {
        private readonly Connection _connection;

        public ArtistaDAO(Connection connection)
        {
            _connection = connection;
        }

        public IEnumerable<Artista> Listar()
        {
            // Listando
            }
            return lista;
        }

        public void Adicionar(Artista artista)
        {
        }
    }
}

AlbumDAO.cs (DAO)

//Imagina um código semelhante ao artista só que pra album

MusicaDAO.cs (DAO)

//Imagina um código semelhante ao artista só que pra musica

Resumo

  • DAL (Data Access Layer): DataAccessLayer.cs é uma camada que abstrai a interação com várias entidades do banco de dados.
  • DAO (Data Access Object): ArtistaDAO.cs, AlbumDAO.cs, MusicaDAO.cs são classes que lidam com as operações específicas de cada entidade.
1 resposta

Oi, Guilherme! Tudo bem?

Muito obrigada por compartilhar suas definições e pontuações com a comunidade do fórum, sua contribuição é muito valiosa e com certeza ajudará outros estudantes! Caso tenha restado alguma dúvida em relação a qualquer conteúdo do curso ou atividade, não hesite em perguntar, estou disponível e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!