DAL em C#: Simplifique a sua vida e torne a manipulação de dados eficiente.
Para quem ingressa no universo de desenvolvimento backend, já se depara com a manipulação de dados, não importa qual SGDB você utilize a persitencia de dados é algo necessário em toda aplicação. A comunidade de código aberto trabalha para tornar fácil a manipulação dos dados, criando vários ORM que adiantam o nosso dia-a-dia. Eu já estudei Java no início, e lembro quando precisava criar um arquivo do tipo: ArquivoDAO.java. Recordo claramente que apenas seguia o que a videoaula estava me repassando, sem entender o que realmente estava acontecendo no código. Ao iniciar meus estudos em C#, já com certa experiência de mercado, me deparo com a criação de ArquivosDAL.cs e lembro dos estudos do Java, só que não era mais o DAO, e sim o DAL. Mas qual a diferença entre essa sopa de letras?
Exemplificando a diferença entre DAO e DAL
DAO (Data Access Object) e DAL (Data Access Layer) são dois conceitos de arquitetura de software que têm algumas diferenças.
O objetivo principal do DAO é encapsular a lógica de acesso aos dados, abstraindo as operações e oferecendo métodos como: Criar, deletar, atualizar e recuperar, o nosso famoso "CRUD".
Basicamente, o DAO preenche a lacuna entre os controllers e o SGDB.
O DAL é mais abrangente e engloba não apenas o DAO (Data Access Object), mas também faz a conexão entre o banco de dados, consultas SQL, trata erros e exceções relacionadas ao acesso ao banco.
O DAL foi projetado para ser reutilizável e independente da lógica de negócios e da implementação de armazenamento de dados. Isso permite que o aplicativo seja facilmente modificado ou estendido sem afetar o código de acesso a dados subjacente.
A importância de utilizar DAL
Utilizar um DAL nas aplicações facilita a manutenção, e a lógica do negócio não tem a preocupação de como acessar os dados, não importando se utiliza um banco de dados relacional ou não relacional, dando a liberdade de migrar de SGDB quando necessário.
O DAL pode ser apenas uma classe ou várias classes que interagem diretamente com os dados, facilitando a persistência de dados.
Veja um exemplo de uma classe DAL genérica que eu criei nos meus estudos de persistência de dados em C#:
`public class DAL where T : class
{
private readonly ScreenSoundContext context;
public DAL(ScreenSoundContext context)
{
this.context = context;
}
public IEnumerable<T> Listar()
{
return context.Set<T>().ToList();
}
public void Adicionar(T objeto)
{
context.Set<T>().Add(objeto);
context.SaveChanges();
}
public void Atualizar(T objeto)
{
context.Set<T>().Update(objeto);
context.SaveChanges();
}
public void Deletar(T objeto)
{
context.Set<T>().Remove(objeto);
context.SaveChanges();
}
public T? RecuperPor(Func<T, bool> condicao)
{
return context.Set<T>().FirstOrDefault(condicao);
}
public IEnumerable<T> ListarPor(Func<T, bool> condicao)
{
return context.Set<T>().Where(condicao);
}
}`
Perceba que também utilizei métodos e funções que se conectam com o banco de dados e realizam as operações CRUD. Gostei realmente de utilizar arquivos DAL em C#, juntamente com a facilidade de um ORM, no meu caso, o Entity Framework.