1.什么是ORM??? ORM,即Object-Relational Mapping(對象關(guān)系映射),它的作用是在關(guān)系型數(shù)據(jù)庫和業(yè)務實體對象之間作一個映射,這樣,我們在具體的操作業(yè)務對象的時候,就不需要再去和復雜的SQL語句打交道,只需簡單的操作對象的屬性和方法。 2.為什么會出現(xiàn)ORM思想????先從項目中數(shù)據(jù)流存儲形式這個角度說起.簡單拿MVC這種分層模式.來說. Model作為數(shù)據(jù)承載實體. 在用戶界面層和業(yè)務邏輯層之間數(shù)據(jù)實現(xiàn)面向?qū)ο驩O形式傳遞. 當我們需要通過Control層分發(fā)請求把數(shù)據(jù)持久化時我們會發(fā)現(xiàn).? 內(nèi)存中的面向?qū)ο蟮腛O如何持久化成關(guān)系型數(shù)據(jù)中存儲一條實際數(shù)據(jù)記錄呢??????面向?qū)ο笫菑能浖こ袒驹瓌t(如耦合、聚合、封裝)的基礎(chǔ)上發(fā)展起來的,而關(guān)系數(shù)據(jù)庫則是從數(shù)學理論發(fā)展而來的.? 兩者之間是不匹配的.而ORM作為項目中間件形式實現(xiàn)數(shù)據(jù)在不同場景下數(shù)據(jù)關(guān)系映射. 對象關(guān)系映射(Object Relational Mapping,簡稱ORM)是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù).ORM就是這樣而來的.?????3.優(yōu)缺點優(yōu)勢????第一:隱藏了數(shù)據(jù)訪問細節(jié),“封閉”的通用數(shù)據(jù)庫交互,ORM的核心。他使得我們的通用數(shù)據(jù)庫交互變得簡單易行,并且完全不用考慮該死的SQL語句??焖匍_發(fā),由此而來。????第二:ORM使我們構(gòu)造固化數(shù)據(jù)結(jié)構(gòu)變得簡單易行。在ORM年表的史前時代,我們需要將我們的對象模型轉(zhuǎn)化為一條一條的SQL語句,通過直連或是DB helper在關(guān)系數(shù)據(jù)庫構(gòu)造我們的數(shù)據(jù)庫體系。而現(xiàn)在,基本上所有的ORM框架都提供了通過對象模型構(gòu)造關(guān)系數(shù)據(jù)庫結(jié)構(gòu)的功能。這,相當不錯。缺點????第一:無可避免的,自動化意味著映射和關(guān)聯(lián)管理,代價是犧牲性能(早期,這是所有不喜歡ORM人的共同點)?,F(xiàn)在的各種ORM框架都在嘗試使用各種方法來減輕這塊(LazyLoad,Cache),效果還是很顯著的。????第二:面向?qū)ο蟮牟樵冋Z言(X-QL)作為一種數(shù)據(jù)庫與對象之間的過渡,雖然隱藏了數(shù)據(jù)層面的業(yè)務抽象,但并不能完全的屏蔽掉數(shù)據(jù)庫層的設(shè)計,并且無疑將增加學習成本.????第三:對于復雜查詢,ORM仍然力不從心。雖然可以實現(xiàn),但是不值的。視圖可以解決大部分calculated column,case ,group,having,order by, exists,但是查詢條件(a and b and not c and (d or d))。????世上沒有驢是不吃草的(又想好又想巧,買個老驢不吃草),任何優(yōu)勢的背后都隱藏著缺點,這是不可避免的。問題在于,我們是否能容忍缺點。4.常用的ORM框架???(1)Hibernate全自動需要些hql語句???(2)iBATIS半自動自己寫sql語句,可操作性強,小巧?? (3)EclipseLink?一個可擴展的支持JPA的ORM框架,供強大的緩存功能,緩存支持集群。???(4)Apache OJB等等