
- Hibernate 教程
- Hibernate - 首頁
- ORM - 概述
- Hibernate - 概述
- Hibernate - 架構
- Hibernate - 環境
- Hibernate - 配置
- Hibernate - 會話
- Hibernate - 持久化類
- Hibernate - 對映檔案
- Hibernate - 對映型別
- Hibernate - 示例
- Hibernate - O/R 對映
- Hibernate - 級聯型別
- Hibernate - 註解
- Hibernate - 查詢語言
- Hibernate - Criteria 查詢
- Hibernate - 原生 SQL
- Hibernate - 快取
- Hibernate - 實體生命週期
- Hibernate - 批次處理
- Hibernate - 攔截器
- Hibernate - ID 生成器
- Hibernate - 儲存圖片
- Hibernate - log4j 整合
- Hibernate - Spring 整合
- Hibernate - Struts 2 整合
- Hibernate - Web 應用
- 對映表示例
- Hibernate - 表繼承策略(每個層次結構一張表)
- Hibernate - 表繼承策略(每個具體類一張表)
- Hibernate - 表繼承策略(每個子類一張表)
- Hibernate 有用資源
- Hibernate - 問題與解答
- Hibernate - 快速指南
- Hibernate - 有用資源
- Hibernate - 討論
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
- 還有很多其他框架