Hibernate - ORM 概述



什麼是 JDBC?

JDBC 代表 **Java 資料庫連線**。它提供了一組 Java API,用於從 Java 程式訪問關係資料庫。這些 Java API 使 Java 程式能夠執行 SQL 語句並與任何符合 SQL 標準的資料庫進行互動。

JDBC 提供了一個靈活的架構來編寫資料庫獨立的應用程式,該應用程式可以在不同的平臺上執行並與不同的 DBMS 互動而無需任何修改。

JDBC 的優缺點

JDBC 的優點 JDBC 的缺點

簡潔明瞭的 SQL 處理

處理大量資料時效能良好

非常適合小型應用程式

語法簡單,易於學習

如果在大型專案中使用,則會變得複雜

程式設計開銷大

沒有封裝

難以實現 MVC 概念

查詢特定於 DBMS

為什麼需要物件關係對映 (ORM)?

當我們使用面向物件的系統時,物件模型和關係資料庫之間存在不匹配。RDBMS 以表格格式表示資料,而面向物件的語言(如 Java 或 C#)則將其表示為物件的互連圖。

考慮以下具有適當建構函式和相關公共函式的 Java 類:

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

假設以上物件要儲存和檢索到以下 RDBMS 表中:

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

第一個問題是,如果我們需要在開發了一些頁面或應用程式後修改資料庫的設計,該怎麼辦?其次,在關係資料庫中載入和儲存物件會使我們面臨以下五個不匹配問題:

序號 不匹配及描述
1

粒度

有時您將擁有一個物件模型,該模型的類數多於資料庫中相應表的數量。

2

繼承

RDBMS 沒有定義任何類似於繼承的東西,而繼承是面向物件程式語言中的自然範例。

3

標識

RDBMS 定義了“相同”的一個概念:主鍵。但是,Java 定義了物件標識 (a==b) 和物件相等性 (a.equals(b))。

4

關聯

面向物件的語言使用物件引用來表示關聯,而 RDBMS 使用外部索引鍵列來表示關聯。

5

導航

在 Java 和 RDBMS 中訪問物件的方式從根本上不同。

**物件關係對映** (ORM) 是解決所有上述阻抗不匹配的方案。

什麼是 ORM?

ORM 代表 **物件關係對映** (ORM),是一種將資料在關係資料庫和麵向物件程式語言(如 Java、C# 等)之間轉換的程式設計技術。

與普通的 JDBC 相比,ORM 系統具有以下優勢:

序號 優勢
1 讓業務程式碼訪問物件而不是資料庫表。
2 隱藏 SQL 查詢的細節,使其與面向物件邏輯分離。
3 基於底層的 JDBC。
4 無需處理資料庫實現。
5 基於業務概念而不是資料庫結構的實體。
6 事務管理和自動鍵生成。
7 快速開發應用程式。

ORM 解決方案包含以下四個實體:

序號 解決方案
1 一個 API,用於對持久化類的物件執行基本的 CRUD 操作。
2 一種語言或 API,用於指定引用類和類屬性的查詢。
3 一個可配置的設施,用於指定對映元資料。
4 一種與事務物件互動的技術,以執行髒檢查、延遲關聯提取和其他最佳化功能。

Java ORM 框架

Java 中有幾個持久化框架和 ORM 選項。持久化框架是一種 ORM 服務,用於將物件儲存和檢索到關係資料庫中。

  • 企業級 JavaBeans 實體 Bean
  • Java 資料物件
  • Castor
  • TopLink
  • Spring DAO
  • Hibernate
  • 還有很多其他框架
廣告