Hibernate – ORM là gì?
Hibernate là gì? JDBC là gì? JDBC là viết tắt của Java Database Connectivity và 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 hiện câu lệnh SQL và tương tác với bất kỳ cơ sở dữ liệu tương ...
JDBC là gì?
JDBC là viết tắt của Java Database Connectivity và 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 hiện câu lệnh SQL và tương tác với bất kỳ cơ sở dữ liệu tương thích SQL nào.
JDBC cung cấp một kiến trúc linh hoạt để viết một ứng dụng cơ sở dữ liệu độc lập 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 sửa đổi gì.
Pros và Cons của JDBC
Pros của JDBC | Cons của JDBC |
---|---|
|
|
ORM là gì?
ORM là viết tắt của Object-Relational Mapping (ORM) 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 so vơi JDBC như sau:
No. | Ưu điểm |
---|---|
1 | Cho phép đối tượng truy cập mã nghiệp vụ thay vì bảng DB. |
2 | Ẩn các chi tiết của các truy vấn SQL từ logic OO. |
3 | Dựa trên JDBC ‘under the hood’ |
4 | Không cần phải đối phó với việc thực hiện cơ sở dữ liệu. |
5 | Các thực thể dựa trên các khái niệm nghiệp vụ thay vì cấu trúc cơ sở dữ liệu. |
6 | Quản lý Transaction và tạo ra key 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:
No. | Giải pháp |
---|---|
1 | Một API để thực hiện các thao tác CRUD cơ bản trên các đối tượng của các lớp persistent. |
2 | Một ngôn ngữ hoặc API để chỉ định các truy vấn đề cập đến các lớp và thuộc tính của các lớp. |
3 | Một phương tiện có thể 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 dirty checking, lazy loading, join fetching và các chức năng tối ưu hóa khác. |
Java ORM Framework
Có một số persistent framework và các tùy chọn ORM trong Java. Một persistent framework là một dịch vụ ORM lưu và truy xuất các đối tượng 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 ORM (Object Relational Mapping)?
Khi chúng ta làm việc với một hệ thống hướng đối tượng, 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 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 #, đại diện cho nó như một đồ thị kết nối của các đối tượng. Xem xét lớp Java sau đây với các constructor phù hợp và phưng thức public liên quan:
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; } }
Xem xét 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:
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 chúng ta cần phải sửa đổi thiết kế của cơ sở dữ liệu của chúng ta sau khi đã phát triển vài trang 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 5 vấn đề không khớp.
Mismatch | Mô tả |
---|---|
Tính chi tiết | Đôi khi bạn sẽ có một mô hình đối tượng có nhiều lớp hơn số lượng các bảng tương ứng trong cơ sở dữ liệu. |
Tính kế thừa | RDBMS không định nghĩa bất cứ điều gì tương tự để kế thừa đó là một mô hình tự nhiên trong các ngôn ngữ lập trình hướng đối tượng. |
Identity | Một RDBMS định nghĩa chính xác một khái niệm về ‘sự giống nhau’: khóa chính. Java, tuy nhiên, định nghĩa cả nhận dạng đối tượng (a == b) và đối tượng bằng nhau (a.equals (b)). |
Mối quan hệ kết hợp | Các ngôn ngữ hướng đối tượng biểu diễn cho các sự kết hợp sử dụng các đối tượng tham chiếu, trong khi RDBMS biểu diễn mối quan hệ kết hợp bằng một cột khoá ngoại. |
Điều hướng | Các cách bạn truy cập các đối tượng trong Java và trong một RDBMS về cơ bản là khác nhau. |
ORM (Object Relational Mapping) là một giải pháp để giải quyết các vấn đề trên.