
Written on 27th June 2024 by Carter Phan.
ORM (Object Relational Mapping), là một kỹ thuật/cơ chế lập trình thực hiện ánh xạ CSDL sang các đối tượng trong các ngôn ngữ lập trình hướng đối tượng. ORM giúp các nhà phát triển giảm thiểu việc phải viết các câu lệnh SQL phức tạp bằng cách định nghĩa các lớp đối tượng trong mã nguồn của ứng dụng.
Khi sử dụng ORM, các lớp đối tượng được định nghĩa bởi người phát triển và được ánh xạ vào các bảng dữ liệu trong cơ sở dữ liệu. Khi các đối tượng được tạo ra hoặc được truy xuất, ORM sẽ tự động tạo hoặc tìm kiếm các bản ghi trong cơ sở dữ liệu và đưa chúng vào các đối tượng.
Có nhiều loại ORM được sử dụng trong lập trình, nhưng hai loại phổ biến nhất là Active Record và Data Mapper.
Có rất nhiều nhược điểm của ORM, bao gồm:
Trở kháng không phù hợp (Impedance mismatch)
Trở kháng không phù hợp là một thuật ngữ chung cho những khó khăn xảy ra khi di chuyển dữ liệu giữa các bảng quan hệ và các đối tượng ứng dụng.
Khả năng giảm hiệu suất
Với ORM, hiệu suất đạt được đến từ việc dịch mã ứng dụng thành câu lệnh SQL tương ứng có thể không được điều chỉnh đúng cách.
ORM cũng thường dễ thử nhưng khó thành thạo. Trong các dự án lớn, ORM chỉ đủ tốt cho khoảng 80-90% trường hợp sử dụng.
Chuyển độ phức tạp từ cơ sở dữ liệu sang mã ứng dụng
Với ORM, mã thao tác dữ liệu nằm trong cơ sở code Python của ứng dụng. Việc bổ sung logic xử lý dữ liệu trong cơ sở mã làm tăng tổng lượng code Python thay vì phân tách mã giữa ứng dụng và thủ tục lưu trữ cơ sở dữ liệu.