Vuong Tuyen
Vuong Tuyen
Xin chào! Tôi là Tuyên.

ORM là gì?

ORM là gì?

ORM (Object-Relational Mapping) là một kỹ thuật lập trình để chuyển đổi dữ liệu giữa các cơ sở dữ liệu quan hệ và các ngôn ngữ lập trình hướng đối tượng như Java, C# … Một hệ thống ORM có những ưu điểm sau:

Ưu điểm của hệ thống ORM

Một giải pháp ORM bao gồm các thực thể sau:

Một số giải pháp

Java ORM Framework

Có một số persistent framework và các tuỳ chọn ORM trong Java. Một Framework là một dịch vụ ORM lưu và truy xuất các Object vào một cơ sở dữ liệu quan hệ.

  • Enterprise JavaBeans Entity Beans
  • Java Data Objects
  • Castor
  • TopLink
  • Spring DAO
  • Hibernate
  • And many more

Tại sao lại sử dụng ORM (Object-Relational Mapping)

Khi chúng ta làm việc với một hệ thống OOP, có một sự không khớp giữa mô hình đối tượng và cơ sở dữ liệu quan hệ. RDBMS thể hiện dữ liệu trong một định dạng bảng, trong khi các ngôn ngữ hướng đối tượng thể hiện nó như một đồ thị kết nối của các Object. Xem xét lớp Java sau đây với constructor phù hợp và phương thức public liên quan:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Employee {
   private int id;
   private String first_name; 
   private String last_name;   
   private int salary;  
 
   public Employee() {}
   public Employee(String fname, String lname, int salary) {
      this.first_name = fname;
      this.last_name = lname;
      this.salary = salary;
   }
   public int getId() {
      return id;
   }
   public String getFirstName() {
      return first_name;
   }
   public String getLastName() {
      return last_name;
   }
   public int getSalary() {
      return salary;
   }
}

Các đối tượng trên cần phải được lưu trữ và truy xuất vào bảng RDBMS sau:

1
2
3
4
5
6
7
create table EMPLOYEE (
   id INT NOT NULL auto_increment,
   first_name VARCHAR(20) default NULL,
   last_name  VARCHAR(20) default NULL,
   salary     INT  default NULL,
   PRIMARY KEY (id)
);

Vấn đề đầu tiên, nếu ta cần phải sửa đổi thiết kế cơ sở dữ liệu của chúng ta sau khi đã phát triển một vài trang của website hoặc ứng dụng? Thứ hai, việc tải và lưu trữ các đối tượng trong một cơ sở dữ liệu quan hệ làm cho chúng ta gặp một số vấn đề không khớp.

Các vấn đề không khớp giữa Ngôn ngữ lập trình và RADBMS

ORM (Object Relational Mapping) là một giải pháp giải quyết các vấn đề trên.