Что это: отдельный слой (объект), который отвечает только за доступ к данным в базе данных. DAO изолирует SQL-запросы и работу с БД от остальной логики приложения.
Зачем нужен:
Пример (Python + SQLAlchemy):
class UserDAO:
def __init__(self, session):
self.session = session
def get_by_id(self, user_id: int):
return self.session.query(User).filter_by(id=user_id).first()
def create(self, username: str):
user = User(username=username)
self.session.add(user)
self.session.commit()
return user
Что это: реляционная база данных, где данные хранятся в таблицах и имеют связи между собой (one-to-many, many-to-many и т. д.).
Особенности:
Примеры: PostgreSQL, MySQL, SQLite, Oracle.
Пример таблицы:
id | name | |
---|---|---|
1 | Али | ali@example.com |
2 | Валя | vali@example.com |
Что это: объект, предназначенный только для передачи данных между слоями программы или сервисами (например, между API и фронтендом). DTO обычно не содержит бизнес-логики, только поля с данными.
Зачем нужен:
Пример (Pydantic):
from pydantic import BaseModel
class UserDTO(BaseModel):
id: int
username: str
email: str
💡 Разница в двух словах:
Термин | Что делает | Где используется |
---|---|---|
DAO | Работает с базой данных | Backend / Data layer |
RDB | Хранит данные в виде таблиц | Database |
DTO | Передаёт данные между компонентами | API / Service layer |