ORM là lớp trung gian ánh xạ bảng DB thành object trong code, để bạn thao tác bằng ngôn ngữ lập trình thay vì viết SQL tay. Hai phong cách: Active Record (model tự chứa logic DB — Rails, Sequelize) và Data Mapper (tách object nghiệp vụ khỏi logic DB — Prisma).
Lợi ích: type-safety, quản lý migration có version, trừu tượng hóa DB (đổi DB dễ hơn), bớt code lặp.
Nhược điểm:
- Trừu tượng "rò rỉ": SQL sinh ra không tối ưu (vd đôi khi tạo subquery thay vì JOIN hiệu quả hơn).
- Dễ dính N+1 query nếu không cẩn thận.
- Khó debug khi cần hiểu SQL thực sự chạy, có overhead runtime.
Điểm chốt: ORM nào cũng có "cửa thoát" raw query (Prisma $queryRaw, Sequelize sequelize.query()) — dùng cho query phức tạp cần kiểm soát chặt. Đừng để ORM che hết SQL: vẫn nên biết nó sinh ra gì.