Из Wiki:
Уровень доступа к данным
Уровень доступа к данным (DAL) в компьютерном программном обеспечении - это уровень компьютерной программы, который обеспечиваетупрощенный доступ к данным, хранящимся в каком-либо постоянном хранилище, таком как объектно-реляционная база данных.
Например, DAL может возвращать ссылку на объект (в терминах объектно-ориентированного программирования) вместе с егоатрибуты вместо ряда полей из таблицы базы данных.Это позволяет создавать клиентские (или пользовательские) модули с более высоким уровнем абстракции.Модель такого типа может быть реализована путем создания класса методов доступа к данным, которые напрямую ссылаются на соответствующий набор хранимых процедур базы данных.Другая реализация может потенциально извлекать или записывать записи в или из файловой системы.DAL скрывает эту сложность базового хранилища данных от внешнего мира.
Например, вместо использования таких команд, как вставка, удаление и обновление, для доступа к определенной таблице в базе данных, классе и некоторых других.хранимые процедуры могут быть созданы в базе данных.Процедуры будут вызываться из метода внутри класса, который будет возвращать объект, содержащий запрошенные значения.Или, команды вставки, удаления и обновления могут быть выполнены в простых функциях, таких как registeruser или loginuser, хранящихся в слое доступа к данным.
Короче говоря, ваши основные функции CRUD / логика на бизнес-объектах для перетаскивания / извлечения из уровня Persistance / Storage сюда попадает.В большинстве случаев вам может понадобиться именно это. ORM-отображение, интерфейсы бизнес-объектов Model и т. Д. попадают сюда.
Уровень абстракции базы данных
Уровень абстракции базы данных - это интерфейс прикладного программирования, который объединяет взаимодействие между компьютерным приложением и базами данных, такими как SQL Server, DB2,MySQL, PostgreSQL, Oracle или SQLite.Традиционно, все поставщики баз данных предоставляют свой собственный интерфейс, адаптированный к их продуктам, который оставляет программисту приложений возможность реализовывать код для всех интерфейсов баз данных, которые он или она хотели бы поддерживать.Слои абстракции базы данных сокращают объем работы, предоставляя разработчикам согласованный API и максимально скрывая специфику базы данных за этим интерфейсом.Существует множество уровней абстракции с различными интерфейсами на разных языках программирования.
По сути, это дополнительный уровень абстракции, так что вы CRUD против интерфейсов, независимых от поставщика, и меньше беспокоитесь о деталях реализации.различных поставщиков баз данных.Это понадобится вам только в том случае, если вы хотите поддерживать более одной базы данных. ORM, Micro ORM, обертки, универсальные классы драйверов, независимо от имени и т. Д. , которые занимаются установлением соединения, обработкой параметров, выполнением и т. Д.Это просто дополнительный слой перед слоем Persistance / Storage.В трехуровневой терминологии оба эти уровня подпадают под один, поскольку они не являются логически разделенными.
Подводя итог, DAL - это данные, DbAL - это база данных.DAL определяет операции, DbAL работает.DAL стоит за DbAL, который стоит за фактическим Db.DAL вызывает DbAL.DAL - это хорошая вещь, чтобы отделить бизнес-логику (в модели) от логики CRUD, в то время как DbAL редко требуется (но мне это нравится).DAL - это более высокоуровневое проектирование, DbAL - более низкоуровневая архитектура и реализация.Оба разделяют обязанности.ORM - это огромные структуры, которые делают и то, и другое для вас.Я не уверен, как вы разделяете их при использовании ORM.Вам не нужно, так как ORM все это обрабатывает для вас.В идеале, я бы в любом случае имел DAL в одном проекте, а DbAL в другом, который я бы просто назвал слоем постоянства, поскольку нет смысла разделять Db и операции над ним.