一、物件關係對映ORM概述
物件關係對映(Object-Relational Mapping,簡稱ORM)是一種為了解決程式的物件導向模型與資料庫的關係模型互不匹配問題的技術;簡單的說,ORM是通過使用描述物件和資料庫之間對映的後設資料(在Java中可以用XML或者是註解),將程式中的物件自動持久化到關聯式資料庫中或者將關聯式資料庫表中的行轉換成Java物件,其本質上就是將資料從一種形式轉換到另外一種形式。
在ORM過程中最重要的概念是對映(Mapping),通過這種對映可以使業務物件與資料庫分離。從物件導向來說,資料庫不應該和業務邏輯繫結到一起,ORM則起到這樣的分離作用,使資料庫層透明,開發人員真正的物件導向。
下圖簡單說明了ORM在多層系統架構中的這個作用。
(圖片來自網路www.shsxt.com)
目前大多數專案或產品都使用關係型資料庫實現業務資料的儲存,這樣在開發過程中,常常有一些業務邏輯需要直接用寫SQL語句實現,但這樣開發的結果是:遍地佈滿SQL語句。這些高藕合的SQL語句給系統的改造和升級帶來很多無法預計的障礙。為了提高專案的靈活性,特別是快速開發,ORM是一個不錯的選擇。舉個簡單的例子:在使用ORM的系統中,當資料庫模型改變時,不再需要理會邏輯程式碼和SQL語句中涉及到該模型的所有改動,只需要將該模型對映的物件稍作改動,甚至不做改動就可以滿足要求。
][3]
圖片來自網路(上海尚學堂)
二、ORM特性及優缺點
1、ORM特性
1.提高了開發效率。由於ORM可以自動對Entity物件與資料庫中的Table進行欄位與屬性的對映,所以我們實際可能已經不需要一個專用的、龐大的資料訪問層。
2.ORM提供了對資料庫的對映,不用sql直接編碼,能夠像操作物件一樣從資料庫獲取資料。
2、ORM優缺點
ORM的缺點是會犧牲程式的執行效率和會固定思維模式。從系統結構上來看,採用ORM的系統一般都是多層系統,系統的層次多了,效率就會降低。ORM是一種完全的物件導向的做法,而物件導向的做法也會對效能產生一定的影響。
在我們開發系統時,一般都有效能問題。效能問題主要產生在演算法不正確和與資料庫不正確的使用上。ORM所生成的程式碼一般不太可能寫出很高效的演算法,在資料 庫應用上更有可能會被誤用,主要體現在對持久物件的提取和和資料的加工處理上,如果用上了ORM,程式設計師很有可能將全部的資料提取到記憶體物件中,然後再進 行過濾和加工處理,這樣就容易產生效能問題。
在對物件做持久化時,ORM一般會持久化所有的屬性,有時,這是不希望的。
但ORM是一種工具,工具確實能解決一些重複,簡單的勞動。這是不可否認的。但我們不能指望工具能一勞永逸的解決所有問題,有些問題還是需要特殊處理的,但需要特殊處理的部分對絕大多數的系統,應該是很少的。
感謝閱讀上海尚學堂文章,獲取更多文章或技術支援,請點選 上海Java培訓