ORM是什麼?ORM介紹
JDBC是什麼?
JDBC代表Java數據庫連接,並提供一組Java API,用於Java程序訪問關係數據庫。這些Java的API允許Java程序執行SQL語句,並與任何SQL兼容的數據庫進行交互。
JDBC提供了一個靈活的架構來編寫一個獨立於數據庫應用程序,它可以在不同的平台上運行,並與不同的數據庫管理係統交互,而無需任何修改。
JDBC的優點和缺點
JDBC的優點 | JDBC的缺點 |
---|---|
|
|
為什麼用對象關係映射(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) );
第一個問題,如果我們需要開發有幾頁或我們的應用程序後,修改數據庫的設計?其次,加載並存儲對象在關係數據庫使我們麵臨以下五大不匹配的問題。
不匹配 | 描述 |
---|---|
Granularity | 有時候,將有哪些具有比在數據庫中對應的表的數目更多的類的對象模型。 |
Inheritance | RDBMS中冇有定義任何類似繼承是麵向對象編程語言的自然範式。 |
Identity | 關係數據庫定義的'千篇一律'隻有一個概念:主鍵。但是,Java定義了對象標識(a== b)和對象相等(那麼a.Equals(b)) |
Associations | 麵向對象的語言表示使用的對象引用,其中的上午RDBMS代表一個協會作為一個外鍵列關聯。 |
Navigation | 訪問Java和關係數據庫對象的方法是根本不同。 |
對象 - 關係映射(ORM)是解決處理所有上述阻抗失配。
什麼是ORM?
ORM代表對象 - 關係映射(ORM)是一種編程技術的ORM係統已通過純JDBC的優點如下關係數據庫和麵向對象的編程語言,如Java,C#等之間轉換數據
S.N. | 優點 |
---|---|
1 | 讓業務代碼訪問對象,而不是數據庫表。 |
2 | 隱藏了麵向對象的邏輯SQL查詢詳情。 |
3 | 基於JDBC的“引擎蓋下” |
4 | 無需處理數據庫實現。 |
5 | 基於業務概念,而不是數據庫結構的實體。 |
6 | 事務管理和自動密鑰生成。 |
7 | 應用程序的快速開發。 |
ORM解決方案由以下四種實體:
S.N. | 解決 |
---|---|
1 | 一個API來對持久化類的對象執行基本的CRUD操作。 |
2 | 語言或API來指定引用的類和類的屬性查詢。 |
3 | 一個可配置的設備,用於指定映射元數據。 |
4 | 技術與事務對象交互,以執行臟數據檢查,懶關聯加載,以及其他優化功能。 |
Java ORM框架:
有幾種持久性框架和Java的ORM方案。持久性框架是一個ORM的服務,存儲和檢索對象到關係型數據庫。
-
企業JavaBeans實體Bean
-
Java Data Objects
-
Castor
-
TopLink
-
Spring DAO
-
Hibernate
-
And many more