Trung BìnhDatabase iconDatabase

ORM (Object-Relational Mapper) là gì? Lợi ích và nhược điểm?

ORM là layer ánh xạ database tables thành objects trong code, cho phép thao tác database bằng programming language thay vì SQL.

  • Hai patterns chính: Active Record (model tự chứa DB logic, ví dụ Rails, Sequelize) và Data Mapper (tách domain object khỏi DB logic, ví dụ TypeORM DataMapper mode, Prisma).
  • Lợi ích: type-safety, migration management (version-controlled schema changes), database abstraction (switch DB dễ hơn), boilerplate reduction.
  • Nhược điểm: abstraction leaky — ORM generate SQL không optimal, ví dụ Prisma đôi khi tạo subquery thay vì JOIN hiệu quả hơn; N+1 query problem nếu không cẩn thận; khó debug khi cần hiểu SQL được generate; overhead runtime.
  • Raw query escape hatch quan trọng: Prisma có $queryRaw, Sequelize có sequelize.query() — nên dùng cho queries phức tạp cần kiểm soát.
  • Migration management: Prisma Migrate, Flyway, Liquibase giúp track và apply schema changes theo đúng thứ tự.

Xem toàn bộ Database cùng filter theo level & chủ đề con.

Mở danh sách Database