Hibernate - Tổng quan về ORM

JDBC là gì?

JDBC là viết tắt của Java Database Connectivity. Nó cung cấp một bộ Java API để truy cập cơ sở dữ liệu quan hệ từ chương trình Java. Các API Java này cho phép các chương trình Java thực thi các câu lệnh SQL và tương tác với bất kỳ cơ sở dữ liệu tuân thủ SQL nào.

JDBC cung cấp một kiến ​​trúc linh hoạt để viết một ứng dụng độc lập với cơ sở dữ liệu có thể chạy trên các nền tảng khác nhau và tương tác với các DBMS khác nhau mà không cần bất kỳ sửa đổi nào.

Ưu và nhược điểm của JDBC

Ưu điểm của JDBC Nhược điểm của JDBC

Xử lý SQL sạch sẽ và đơn giản

Hiệu suất tốt với dữ liệu lớn

Rất tốt cho các ứng dụng nhỏ

Cú pháp đơn giản nên dễ học

Phức tạp nếu nó được sử dụng trong các dự án lớn

Chi phí lập trình lớn

Không đóng gói

Khó thực hiện khái niệm MVC

Truy vấn dành riêng cho DBMS

Tại sao lại lập bản đồ quan hệ đối tượng (ORM)?

Khi chúng ta làm việc với một hệ thống hướng đối tượng, có sự không phù hợp giữa mô hình đối tượng và cơ sở dữ liệu quan hệ. Các RDBMS biểu thị dữ liệu ở định dạng bảng trong khi các ngôn ngữ hướng đối tượng, chẳng hạn như Java hoặc C # thể hiện nó dưới dạng một biểu đồ liên kết với nhau của các đối tượng.

Hãy xem xét Lớp Java sau với các hàm tạo thích hợp và hàm công khai được liên kết:

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;
   }
}

Hãy xem xét các đối tượng trên sẽ được lưu trữ và truy xuất vào bảng RDBMS sau:

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, điều gì sẽ xảy ra nếu chúng ta cần sửa đổi thiết kế của cơ sở dữ liệu sau khi đã phát triển một vài trang hoặc ứng dụng của chúng ta? Thứ hai, việc tải và lưu trữ các đối tượng trong cơ sở dữ liệu quan hệ khiến chúng ta gặp phải năm vấn đề không khớp sau:

Sr.No. Mô tả & Không khớp
1

Granularity

Đôi khi bạn sẽ có một mô hình đối tượng, có nhiều lớp hơn số lượng bảng tương ứng trong cơ sở dữ liệu.

2

Inheritance

RDBMS không định nghĩa bất cứ điều gì tương tự như Thừa kế, là một mô hình tự nhiên trong ngôn ngữ lập trình hướng đối tượng.

3

Identity

RDBMS xác định chính xác một khái niệm về 'tính giống nhau': khóa chính. Tuy nhiên, Java xác định cả danh tính đối tượng (a == b) và bình đẳng đối tượng (a.equals (b)).

4

Associations

Các ngôn ngữ hướng đối tượng đại diện cho các liên kết bằng cách sử dụng tham chiếu đối tượng trong khi một RDBMS biểu thị một liên kết như một cột khóa ngoại.

5

Navigation

Cách bạn truy cập các đối tượng trong Java và trong RDBMS về cơ bản là khác nhau.

Các Object-Rphấn chấn Mapping (ORM) là giải pháp để xử lý tất cả các trường hợp không khớp trở kháng trên.

ORM là gì?

ORM là viết tắt của Object-Rphấn chấn Mapping (ORM) 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ôn ngữ lập trình hướng đối tượng như Java, C #, v.v.

Hệ thống ORM có những ưu điểm sau so với JDBC đơn thuần:

Sr.No. Ưu điểm
1 Hãy mã nghiệp vụ truy cập các đối tượng hơn là các bảng DB.
2 Ẩn chi tiết của các truy vấn SQL khỏi logic OO.
3 Dựa trên JDBC 'under the hood.'
4 Không cần phải xử lý việc triển khai cơ sở dữ liệu.
5 Các thực thể dựa trên các khái niệm kinh doanh hơn là cấu trúc cơ sở dữ liệu.
6 Quản lý giao dịch và tạo khóa tự động.
7 Phát triển ứng dụng nhanh chóng.

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

Sr.No. Các giải pháp
1 Một API để thực hiện các hoạt động CRUD cơ bản trên các đối tượng của các lớp liên tục.
2 Một ngôn ngữ hoặc API để chỉ định các truy vấn tham chiếu đến các lớp và thuộc tính của các lớp.
3 Một cơ sở có thể định cấu hình để chỉ định siêu dữ liệu ánh xạ.
4 Một kỹ thuật tương tác với các đối tượng giao dịch để thực hiện kiểm tra bẩn, tìm nạp liên kết lười biếng và các chức năng tối ưu hóa khác.

Khung ORM Java

Có một số khung và tùy chọn ORM ổn định trong Java. Khung liên tục là một dịch vụ ORM lưu trữ và truy xuất các đối tượng vào cơ sở dữ liệu quan hệ.

  • Enterprise JavaBeans Entity Beans
  • Đối tượng dữ liệu Java
  • Castor
  • TopLink
  • Xuân DAO
  • Hibernate
  • Và nhiều thứ khác nữa