Orm (object-relational mapping) là gì

Mô hình O/R Mapping là chữ viết tắ t của cụm từ mô hình object relational mapping là môt phương pháp lập trình giúp người dùng chuyển đổi từ mô hình database sang mô hình hướng đối tượng. Các lập trình viên hay sử dụng mô hình object relational mapping vì nó giúp họ thuận lợi hơn so với những phương pháp truy cập dữ liệu (data access) khác: 

Đó là vì object relational mapping tự động hóa chuyển đổi từ object sang table và ngược lại từ table sang object rất nhanh chóng giúp giảm thời gian cũng như chi phí phát triển. Object relational mapping cũng cần ít code hơn sotre procedures. Object relational mapping có khả năng thay thế số lượng lớn store procedudres cần phát triển. Bên cạnh đó, ORM cũng giúp tăng tốc thực thi của hệ thống.

Những ưu điểm của object relational mapping

Orm (object-relational mapping) là gì
Những ưu điểm của object relational mapping

Ưu điểm đầu tiên của object relational mapping chính là độc lập hệ quản trị cơ sở dữ liệu, hầu hết các framwork của object relational mapping đều luôn được thiết kế để độc lập với các hệ quản trị cơ sở dữ liệu, chỉ cần thay đổi driver là bạn có thể giao tiếp với một database khác mà không phải bỏ công thay đổi bất kỳ dòng code nào. 

Ưu điểm thứ hai chính là khả năng cung cấp các API một cách đơn giản, dễ sử dụng. Lập trình viên không cần phải nhớ mình nên select, update bao nhiêu field cho lọai đối tượng nào, chỉ cần sử dụng thành thạo các hàm Save, Load, Query, Update + một ngôn ngữ query ORM (nếu như framework ORM hỗ trợ – ví dụ ngôn ngữ HQL của Hibernate).

Object relational mapping giúp cho bản thiết kế trở nên gần gũi hơn với mọi lập trình viên, lập trình viên chỉ cần nắm được sơ đồ thiết kế lớp là có thể implement dễ dàng rồi, đồng thời bản thiết kế của object relational mapping sẽ linh động, giúp giảm bớt chi phí khi sửa code thay đổi model …

Chia sẻ từ Dotnetguru về mô hình O/R Mapping hy vọng sẽ giúp những người mới học lập trình có thể hiểu hơn về mô hình này.

Vậy lúc nào nên dùng ORM và lúc nào không? Đâu là lựa chọn hợp lý cho bạn? Có lẽ kinh nghiệm qua những lần sấp mặt mới có thể trả lời được.


Orm (object-relational mapping) là gì


Kevin Dang

Hey there! My benh.edu.vn is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.

“ORM là gì?” – Đây là câu hỏi được nhiều dân lập trình quan tâm. Bởi lẽ, đa số dự án ngày nay đều ứng dụng ORM Framework để đơn giản hóa việc truy vấn và quản lý CSDL. Và tất nhiên, bất cứ công nghệ nào cũng sẽ có những ưu điểm và hạn chế tồn tại song song, không ngoại trừ ORM. Vậy nên trong bài viết dưới đây, hãy cùng Vietnix tìm hiểu khái niệm cũng như ưu nhược điểm của kỹ thuật này nhé!

Nội dung

ORM là gì?

ORM (Object Relational Mapping) là một kỹ thuật lập trình cho phép ánh xạ cơ sở dữ liệu đến các đối tượng thuộc ngôn ngữ lập trình hướng đối tượng chẳng hạn như C#, Java,… (các table tương ứng các class, mối ràng buộc giữa các table tương ứng quan hệ giữa các class ‘has a’ , ‘is a’).

Cụ thể hơn, chúng ta sẽ chuyển dữ liệu trong CSDL quan hệ sang đối tượng. Điều này giúp lập trình viên có thể thao tác với CSDL (database) một cách dễ hiểu, tự nhiên mà không cần phải quan tâm đến database hay kiểu dữ liệu trong database,…

Orm (object-relational mapping) là gì
ORM là gì?

Orm (object-relational mapping) là gì

Ưu và nhược điểm của ORM là gì?

Sau khi hiểu được ORM là gì, chúng ta hãy cùng đi sâu vào phân tích ưu và nhược điểm của kỹ thuật này.

Về ưu điểm

  • OOP: Cơ chế ORM giúp người lập trình tập trung hơn vào việc lập trình hướng đối tượng (OOP).
  • Cho phép truy cập vào code nghiệp vụ thay vì database.
  • Hạn chế những lỗi ngữ pháp trong SQL.
  • Quản lý Transaction, tạo key tự động.
  • Đơn giản và dễ sử dụng dùng không thành thạo MySQL: Cung cấp nhiều API truy vấn, hỗ trợ HSQL.
  • Ẩn chi tiết của những truy vấn SQL từ logic OO.
  • Đem lại năng suất cao hơn: Lập trình viên code ít hơn nhưng lại dễ hiểu hơn. Điều này phù hợp với những case CRUD như Create, Read, Update, Delete.
  • Nâng cao tính độc lập: Thực hiện được với nhiều loại database (hệ quản trị cơ sở dữ liệu) và nhiều kiểu dữ liệu khác nhau. Việc thay đổi loại database trở nên dễ dàng hơn khi không bị phụ thuộc bởi các câu lệnh SQL.
  • Năng suất hơn: Viết code ít hơn, dễ hiểu hơn. Phù hợp các case CRUD (Create, Read, Update, Delete)
  • Cho phép lập trình viên sử dụng lại code.
  • ORM Framework cho phép truy xuất nhanh hơn bằng cách cache dữ liệu.
  • Tự động thực hiện những thao tác với dữ liệu.
Orm (object-relational mapping) là gì
Ưu và nhược điểm của ORM là gì?

Về nhược điểm

  • Đối với những ai mới tìm hiểu về kỹ thuật ORM là gì sẽ gặp phải nhiều khó khăn trong quá trình sử dụng.
  • Khả năng truy vấn vẫn còn bị hạn chế, thỉnh thoảng lập trình viên vẫn phải dùng đến native SQL mới có thể truy vấn database.
  • Khó khăn trong việc tối ưu câu lệnh SQL (vì câu lệnh SQL được tự động sinh ra bởi ORM).
  • Lập trình viên dễ gặp tình trạng bị truy xuất quá nhiều dữ liệu, bởi lẽ lúc này dữ liệu rất dễ để truy xuất. Từ đó làm ảnh hưởng đến hiệu năng hệ thống.
  • Khi sử dụng ORM Framework, lập trình viên dễ bị rơi vào bẫy truy xuất dữ liệu quá nhiều (vì quá dễ để truy xuất), ảnh hưởng đến hiệu năng của hệ thống.

Có thể thấy, ORM đem đến những ưu điểm vượt trội song vẫn còn tồn tại một số mặt hạn chế. Tùy thuộc vào mục đích và hoàn cảnh để quyết định có nên sử dụng ORM Framework hay không. Từ đó, hãy lựa chọn cách thức tiếp cận phù hợp nhất.

ORM hoạt động như thế nào?

ORM có đặc trưng cơ bản là gói gọn CSDL trong một object. Trong object, một phần là data, phần còn lại đảm nhận công việc xử lý data để chuyển nó thành CSDL quan hệ.

Mặc khác, ORM còn giải quyết được vấn đề đồng bộ khi những kiểu dữ liệu được trả về là khác nhau. Một bên sẽ là cơ sở dữ liệu, bao gồm dữ liệu được thể hiện ở dạng tập hợp bản ghi. Bên còn lại là những đối tượng, bao gồm dữ liệu thể hiện ở dạng object.

Orm (object-relational mapping) là gì

Một số lưu ý để ứng dụng ORM Framework hiệu quả

Dưới đây là một số lưu ý để bạn có thể ứng dụng kỹ thuật ORM một cách hiệu quả hơn:

  • Định nghĩa đơn giản về Model Object khi sử dụng ORM: Điều này hạn chế được tình trạng chương trình trở thành một “mớ bòng bong”. ORM cũng hoạt động đúng với mong muốn hơn.
  • Sử dụng ORM với những tác vụ đơn giản: Khi chương trình bao gồm những tác vụ đơn giản thì áp dụng kỹ thuật ORM chính là giải pháp hiệu quả. Mặc dù kỹ thuật này khá phức tạp và khó debug trong một số trường hợp nhưng có thể giúp bạn tiết kiệm được thời gian code đáng kể.
  • Định nghĩa DAO hoặc tầng tương tự: Giúp tách riêng biệt tầng ứng dụng và tầng truy cập dữ liệu.
  • Không áp dụng ORM cho những CSDL bao gồm nhiều truy vấn phức tạp hay có tính năng riêng cho mỗi loại: Nhiều ORM (chẳng hạn như Hibernate,…) cung cấp phương thức kết nối giữa lập trình viên với CSDL và sử dụng câu lệnh SQL trực tiếp. Tuy nhiên, giá trị ORM trong trường hợp này không thật sự cao, trong đó còn tồn tại nhiều nguy cơ gây ra bug.
  • Không sử dụng ORM khi đòi hỏi tốc độ truy vấn tới CSDL cao: Để tốc độ truy vấn được nhanh và tốt ưu, cách tốt nhất là viết câu truy vấn kèm theo những điều kiện liên quan đến cấu trúc hay phiên bản CSDL mà bạn đang sử dụng.

Lời kết

Nếu biết vận dụng đúng cách, ORM có thể sẽ hỗ trợ khá nhiều cho công việc của bạn. Trên đây là những thông tin về khái niệm ORM là gì, ưu nhược điểm cũng như cách thức hoạt động của ORM Framework. Qua bài viết, Vietnix hy vọng bạn đọc sẽ ứng dụng vào công việc của mình một cách hiệu quả. Chúc bạn thành công!

Orm (object-relational mapping) là gì

Chia sẻ bài viết

Đánh giá

5/5 - (1 bình chọn)

Orm (object-relational mapping) là gì

Nguyễn Hưng

Kết nối với mình qua

Orm (object-relational mapping) là gì

Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PearsonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!