Chú ý: Chào mừng bạn đến với Snettech!

ORM - Ánh xạ quan hệ-đối tượng (Object–relational mapping)


Ánh xạ quan hệ-đối tượng ( ORM , O/RM và công cụ ánh xạ O/R ) trong khoa học máy tính là một kỹ thuật lập trình để chuyển đổi dữ liệu giữa cơ sở dữ liệu quan hệ và đống ngôn ngữ lập trình hướng đối tượng . Trên thực tế, điều này tạo ra một cơ sở dữ liệu đối tượng ảo có thể được sử dụng từ bên trong ngôn ngữ lập trình.

Mô hình ORM (Object–relational mapping)

Mô hình ORM (Object–relational mapping)

Trong lập trình hướng đối tượng , các tác vụ quản lý dữ liệu tác động lên các đối tượng kết hợp các giá trị vô hướng thành các đối tượng. Ví dụ: hãy xem xét một mục trong sổ địa chỉ đại diện cho một người cùng với 0 hoặc nhiều số điện thoại và 0 hoặc nhiều địa chỉ. Điều này có thể được mô hình hóa trong triển khai hướng đối tượng bằng một " đối tượng Người " với thuộc tính/trường để giữ từng mục dữ liệu mà mục nhập bao gồm: tên người, danh sách số điện thoại và danh sách địa chỉ. Bản thân danh sách các số điện thoại sẽ chứa "đối tượng PhoneNumber", v.v. Mỗi mục trong sổ địa chỉ như vậy được ngôn ngữ lập trình coi là một đối tượng (ví dụ: nó có thể được tham chiếu bằng một biến duy nhất chứa con trỏ tới đối tượng). Nhiều phương thức khác nhau có thể được liên kết với đối tượng, chẳng hạn như các phương thức trả về số điện thoại ưa thích, địa chỉ nhà riêng, v.v.

ORM các thuộc tính đối tượng và bảng dữ liệuORM các thuộc tính đối tượng và bảng dữ liệu

Minh họa ORM các đối tượng và DB

Ngược lại, cơ sở dữ liệu quan hệ, chẳng hạn như SQL , nhóm các đại lượng vô hướng thành các bộ dữ liệu , sau đó được liệt kê trong các bảng . Bộ dữ liệu và đối tượng có một số điểm tương đồng chung, trong đó cả hai đều là cách thu thập giá trị vào các trường được đặt tên sao cho toàn bộ bộ sưu tập có thể được xử lý như một thực thể phức hợp duy nhất. Tuy nhiên, chúng có nhiều điểm khác biệt, cụ thể là: quản lý vòng đời (chèn và xóa hàng, so với thu thập rác hoặc đếm tham chiếu ), tham chiếu đến các thực thể khác (tham chiếu đối tượng, so với tham chiếu khóa ngoài) và kế thừa (không tồn tại trong cơ sở dữ liệu quan hệ) . Ngoài ra, các đối tượng được quản lý trên heap và chịu toàn quyền kiểm soát của một quy trình duy nhất, trong khi các bộ dữ liệu cơ sở dữ liệu được chia sẻ và phải kết hợp khóa, hợp nhất và thử lại. Ánh xạ quan hệ-đối tượng cung cấp hỗ trợ tự động cho việc ánh xạ các bộ dữ liệu tới các đối tượng và ngược lại, đồng thời tính đến tất cả những khác biệt này.

ORM và bảng dữ liệu

ORM và bảng dữ liệu

Trọng tâm của vấn đề liên quan đến việc dịch biểu diễn logic của các đối tượng thành dạng nguyên tử hóa có khả năng được lưu trữ trong cơ sở dữ liệu trong khi vẫn bảo toàn các thuộc tính của đối tượng và mối quan hệ của chúng để chúng có thể được tải lại dưới dạng đối tượng khi cần. Nếu chức năng lưu trữ và truy xuất này được triển khai, các đối tượng được cho là liên tục.

Tổng quan:

Các chi tiết cụ thể về triển khai của trình điều khiển lưu trữ thường được gói trong một API bằng ngôn ngữ lập trình đang sử dụng, hiển thị các phương thức tương tác với phương tiện lưu trữ theo cách đơn giản hơn và phù hợp hơn với các mô hình mã xung quanh.

Sau đây là một ví dụ đơn giản, được viết bằng mã C# , để thực hiện truy vấn được viết bằng SQL bằng công cụ cơ sở dữ liệu.

var sql = "SELECT id, first_name, last_name, phone, birth_date, sex, age FROM persons WHERE id = 10";
var result = context.Persons.FromSqlRaw(sql).ToList();
var name = result[0]["first_name"];

Ngược lại, phần sau đây sử dụng API công việc ORM để có thể viết mã tận dụng các tính năng của ngôn ngữ một cách tự nhiên.

var person = repository.GetPerson(10);
var firstName = person.GetFirstName();

Trường hợp trên sử dụng một đối tượng biểu diễn kho lưu trữ và các phương thức của đối tượng đó. Các khung công tác khác có thể cung cấp mã dưới dạng các phương thức tĩnh, như trong ví dụ bên dưới, tuy nhiên các phương thức khác có thể không triển khai một hệ thống hướng đối tượng nào cả. Thông thường, việc lựa chọn mô hình được thực hiện sao cho ORM phù hợp nhất với các nguyên tắc thiết kế của ngôn ngữ xung quanh.

var person = Person.Get(10);

So sánh với các kỹ thuật truy cập dữ liệu truyền thống:

So với các kỹ thuật trao đổi truyền thống giữa ngôn ngữ hướng đối tượng và cơ sở dữ liệu quan hệ, ORM thường giảm số lượng mã cần viết.

Nhược điểm của các công cụ ORM thường xuất phát từ mức độ trừu tượng cao che khuất những gì thực sự xảy ra trong mã triển khai. Ngoài ra, sự phụ thuộc nhiều vào phần mềm ORM được coi là yếu tố chính dẫn đến việc tạo ra cơ sở dữ liệu được thiết kế kém.

Cơ sở dữ liệu hướng đối tượng:

Một cách tiếp cận khác là sử dụng hệ thống quản lý cơ sở dữ liệu hướng đối tượng (OODBMS) hoặc cơ sở dữ liệu hướng tài liệu như cơ sở dữ liệu XML gốc để cung cấp tính linh hoạt hơn trong mô hình hóa dữ liệu. OODBMS là cơ sở dữ liệu được thiết kế đặc biệt để làm việc với các giá trị hướng đối tượng. Việc sử dụng OODBMS loại bỏ nhu cầu chuyển đổi dữ liệu sang và từ dạng SQL của nó, vì dữ liệu được lưu trữ dưới dạng biểu diễn đối tượng ban đầu và các mối quan hệ được biểu diễn trực tiếp, thay vì yêu cầu các bảng /thao tác nối. Tương đương với ORM dành cho cơ sở dữ liệu hướng tài liệu được gọi là trình ánh xạ tài liệu đối tượng (ODM).

Cơ sở dữ liệu hướng tài liệu cũng giúp người dùng không phải "cắt nhỏ" các đối tượng thành các hàng trong bảng. Nhiều hệ thống trong số này cũng hỗ trợ ngôn ngữ truy vấn XQuery để truy xuất bộ dữ liệu.

Cơ sở dữ liệu hướng đối tượng có xu hướng được sử dụng trong các ứng dụng phức tạp, thích hợp. Một trong những lập luận chống lại việc sử dụng OODBMS là nó có thể không thực hiện được các truy vấn đặc biệt, độc lập với ứng dụng. Vì lý do này, nhiều lập trình viên thấy thoải mái hơn với hệ thống ánh xạ SQL đối tượng, mặc dù hầu hết các cơ sở dữ liệu hướng đối tượng đều có thể xử lý các truy vấn SQL ở một mức độ hạn chế. OODBMS khác cung cấp khả năng sao chép sang cơ sở dữ liệu SQL, như một phương tiện giải quyết nhu cầu về các truy vấn đặc biệt, trong khi vẫn bảo tồn các mẫu truy vấn phổ biến.

Những thách thức:

Nhiều khó khăn nảy sinh khi xem xét cách kết hợp một hệ thống đối tượng với cơ sở dữ liệu quan hệ. Những khó khăn này được gọi là sự không phù hợp trở kháng quan hệ-đối tượng.

Một cách khác để triển khai ORM là sử dụng các ngôn ngữ thủ tục gốc được cung cấp với mọi cơ sở dữ liệu chính. Chúng có thể được gọi từ máy khách bằng cách sử dụng các câu lệnh SQL. Mẫu thiết kế Đối tượng truy cập dữ liệu (DAO) được sử dụng để trừu tượng hóa các câu lệnh này và cung cấp giao diện hướng đối tượng nhẹ cho phần còn lại của ứng dụng.

Nguồn thông tin và hình ảnh: sưu tầm và tổng hợp từ internet.


Bình luận Facebook:

0383697284