Giới thiệu về Object Relational Mapping - aktvTech - Share your tech knowledge

Recent

Home Top Ad

Responsive Ads Here

Friday, May 15, 2020

Giới thiệu về Object Relational Mapping

ORM (Object Relational Mapping) là 1 kỹ thuật lập trình giúp ánh xạ các record dữ liệu trong hệ quản trị cơ sở dữ liệu sang dạng đối tượng đang định nghĩa trong các class. Đặc trưng cơ bản của ORM là gói gọn CSDL trong 1 object. 1 phần của object sẽ chứa data, và phần còn lại lo việc data xử lý như nào và biến nó thành CSDL quan hệ.

1. Cách thức hoạt động


ORM giải quyết vấn đề đồng bộ giữa kiểu dữ liệu trả về khác nhau. Một bên là cơ sở dữ liệu, ở đó dữ liệu được thể hiện dưới dạng tập hợp các bản ghi. Một bên là các đối tượng, ở đó dữ liệu đc hiện thị dưới dạng object.
Bảng so sánh giữa Object Model và Relational Model
Object Model Relational Model
Tính chi tiết Chúng ta có thể dễ dàng chia nhỏ thành 1 hay nhiều object nhỏ. Ví dụ: Một Object Person ta có thể định nghĩa 1 object con bên trong Address Dữ liệu được lưu dưới dạng cột và dòng. Ta không thể định nghĩa 1 table con bên trong mà thay vào đó ta phải sử dụng đến mối quan hệ giữa các bảng.(Relationship)
Tính kế thừa Cho phép chúng ta xây dựng các sụb-class kế thừa từ 1 class parent nào đó. Không cho phép tính kế thừa. Thay vào đó chúng ta có thể định nghĩa cột "type" để phân loại các class parent-child với nhau.
Nhận dạng (Identity) Sử dụng cơ chế riêng để phân biêt. (equals) Relational Model: Sử dụng primary key để nhận dạng các record với nhau
Mối quan hệ kết hợp Sử dụng Object References để truy cập đến nhau.
Mối liên kết này có thể truy suất ở cả hai chiều.
Liên kết với nhau thông qua Foreign Key nên chỉ có thể truy suất 1 chiều (từ bảng có chứa fk)
Từ bảng trên ta có thể thấy tính ưu việc của Object Model.

2. Ưu và nhược điểm

Ưu điểm:

  • Tuân thủ nguyên tắc DRY, tập trung hóa code của bạn tại một chỗ, và việc chỉnh sửa, maintain, tái sử dụng lại code sẽ dễ dàng hơn
  • Rất nhiều thứ được thực hiện "tự động", liên quan tới việc xử lí dữ liệu, trong ví dụ trên chúng ta không cần quan tâm đến việc dùng vòng để convert data từ mysql ra, Chỉ cần biết đầu vào là keyword đầu ra trả lại 1 danh sách các quyển sách có author=Linus
  • Tuân thủ nguyên tắc DRY, tập trung hóa code của bạn tại một chỗ, và việc chỉnh sửa, maintain, tái sử dụng lại code sẽ dễ dàng hơn
  • Việc sử dụng ORM làm bạn bắt buộc phải viết code theo mô hình MVC, khiến code của bạn dễ sửa đổi, bảo trì hơn.
  • Model k ràng buộc chặt chẽ với ứng dụng, hay nói cách khác, Model thì linh hoạt, vì vậy bạn có thể thay đổi hoặc sử dụng nó bất cứ chỗ nào.
  • ORM cho phép bạn tận dụng ưu điểm của OOP như kế thừa dữ liệu mà không phải đau đầu

Nhược điểm:

  • Với mỗi framework sẽ có 1 thư viện ORM khác nhau, tất nhiên là bạn phải mất thời gian học nó. Và vì chúng là thư viện nên sẽ rất "nặng".
  • Performance ổn đối với các truy vấn thông thường, nhưng Raw SQL sẽ luôn làm tốt hơn với các dự án lớn.
  • ORM được coi là abstracts của DB. Nếu bạn không quan tâm đến những gì thực sự xảy ra khi sử dụng ORM. Nó có thể là cái bẫy với những bài toán N + 1 query.

No comments:

Post a Comment