薇婭丈夫致歉:在稅務上犯了大錯,向公眾道歉的同時更應該向妻子道歉
一、ORM框架指的是物件、關係、對映
而ORM框架主要分為Hibernate(Nhibernate),iBATIS,mybatis,EclipseLink,JFinal這五種
ORM方法論基於三個核心原則:
- 簡單性:以最基本的形式建模資料。
- 傳達性:資料庫結構被任何人都能理解的語言文件化。
- 精確性:基於資料模型建立正確標準化了的結構。
二、ORM優缺點
優點:
提高開發效率,降低開發成本
使開發更加物件化
可移植
可以很方便地引入資料快取之類的附加功能
缺點:
自動化進行關係資料庫的對映需要消耗系統性能。其實這裡的效能消耗還好啦,一般來說都可以忽略之。
在處理多表聯查、where條件複雜之類的查詢時,ORM的語法會變得複雜。
三、ORM框架形式
1.EF(Entity framework)實體框架:ado.net一組支援開發面向資料的軟體應用程式的技術。微軟的一個ORM框架
其實在上圖中我們可以看出來使用了ORM的框架,使用的是強制型別,不容易出現錯誤,直接實現了由表實體到表的操作,而沒有使用的ORM框架,我們需要資料庫訪問驅動層,Ado.NET操作資料,是一種弱型別的操作,非常容易出現錯誤。其實ORM框架的底層程式碼也是ADO.NET,只不過這些程式碼是封裝好了的,直接可以被使用者使用,非常方便!
2.linq to sql
其實在ORM框架除了EF對映,還有linq to sql,注意到這一塊是因為在vs中建立EF對映的下面還有一個叫做linq to sql,其實這也是一種ORM的框架,只是適用於一些輕型的,小的ORM適用;感興趣的可以嘗試一下!相關訪問博文:http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html
3.CYQ.Data 自動化程式設計框架
這個框架其實也是在EF的原理基礎之上通過改編形成的一種ORM框架,詳情請看:
http://www.cnblogs.com/cyq1162/p/5634414.html
4. NHibernate
NHibernate是一個面向.NET環境的物件/關係資料庫對映工具。物件/關係資料庫對映(object/relational mapping,ORM)這個術語表示一種技術,用來把物件模型表示的物件對映到基於SQL的關係模型資料結構中去。所以NHibernate與Entity
Framework是很相近的。
其實在敲ssh商城的時候我就一直遇到一個名詞:資料持久化,當時一直不太明白到底是什麼意思,後來在學習這一塊基礎的時候發現:資料持久化(PO)就是將記憶體中的資料模型轉換為儲存模型,以及將儲存模型轉換為記憶體中的資料模型的統稱.資料模型可以是任何資料結構或物件模型,儲存模型可以是關係模型、XML、二進位制流等。cmp和Hibernate只是物件模型到關係模型之間轉換的不同實現。
四、廣義上,ORM指的是面向物件的物件模型和關係型資料庫的資料結構之間的相互轉換。
狹義上,ORM可以被認為是,基於關係型資料庫的資料儲存,實現一個虛擬的面向物件的資料訪問介面。理想情況下,基於這樣一個面向物件的介面,持久化一個ORM物件應該不需要了解任何關係型資料庫儲存資料的實現細節。
ORM思想其實就是表實體和表之間的相互轉化。
五、
資料持久化
ORM是通過使用描述物件和資料庫之間對映的元資料,將程式中的物件自動持久化到關係資料庫中。那麼,到底如何實現持久化呢?一種簡單的方案是採用硬編碼方式,為每一種可能的資料庫訪問操作提供單獨的方法。
這種方案存在以下不足:
1. 持久化層缺乏彈性。一旦出現業務需求的變更,就必須修改持久化層的介面
2 持久化層同時與域模型與關係資料庫模型繫結,不管域模型還是關係資料庫模型發生變化,毒藥修改持久化曾的相關程式程式碼,增加了軟體的維護難度。
ORM提供了實現持久化層的另一種模式,它採用對映元資料來描述物件關係的對映,使得ORM中介軟體能在任何一個應用的業務邏輯層和資料庫層之間充當橋樑。Java典型的ORM中介軟體有:Hibernate,ibatis,speedframework。
資料持久化就是將記憶體中的資料模型轉換為儲存模型,以及將儲存模型轉換為記憶體中的資料模型的統稱. 資料模型可以是任何資料結構或物件模型,儲存模型可以是關係模型、XML、二進位制流等。
狹義的理解,持久化僅僅是指把物件資料永久儲存在資料庫中,資料在計算機中一般由兩個儲存地,記憶體為暫存,資料庫可以理解為永存;廣義的理解,持久化包括和資料庫相關的各種操作,封裝了資料訪問細節,為大部分業務邏輯提供面向物件的API。
資料持久化好處:
鬆散耦合,程式程式碼重用性強,使持久化不依賴於底層資料庫和上層業務邏輯實現,更換資料庫時只需修改配置檔案而不用修改程式碼。
業務邏輯程式碼可讀性強,在程式碼中不會有大量的SQL語言,提高程式的可讀性。
持久化技術可以自動優化,以減少對資料庫的訪問量,提高程式執行效率
資料持久化物件的基本操作有:儲存、更新、刪除、查詢等。
由此可知,資料持久層也就是與資料互動的那一層次,所以有時候有見到ORM框架介紹:是一個數據持久層(ORM)框架
六、
一般的ORM包括以下四部分:
- 一個對持久類物件進行CRUD操作的API;
- 一個語言或API用來規定與類和類屬性相關的查詢;
- 一個規定mapping metadata的工具;
- 一種技術可以讓ORM的實現同事務物件一起進行dirty checking, lazy association fetching以及其他的優化操作。
目前流行的 ORM 產品
Java系列:
- Apache OJB
- Cayenne
- Jaxor
- Hibernate
- iBatis
- jRelationalFramework
- mirage
- SMYLE
- TopLink
其中 TopLink 是 Oracle 的商業產品,其他均為開源專案。 其中 Hibernate 的輕量級 ORM 模型逐步確立了在 Java ORM 架構中領導地位,甚至取代複雜而又繁瑣的 EJB 模型而成為事實上的 Java ORM 工業標準。而且其中的許多設計均被 J2EE 標準組織吸納而成為最新 EJB 3.0 規範的標準,
.Net系列:
- NHibernate
- NBear
- Castle ActiveRecord
- iBATIS.NET
- DAAB
- EntitysCodeGenerate
- EntityFormerWork
- Linq to sql
- PetaPoco
1.NHibernate
提起NHibernate,相信大家都不陌生,NHibernate來源於非常優秀的基於Java的Hibernate關係型持久化工具,它從資料庫底層來持久化.Net物件到關係型資料庫,NHibernate為我們完成這一切,而不用自己寫SQL語句去操作資料庫物件,所寫的程式碼僅僅和物件關聯,NHibernat自動產生SQL語句,並確保物件提交到正確的表和欄位中去.大量減少開發時人工使用SQL和ADO.NET處理資料的時間. NHibernate可以幫助消除或者包裝那些針對特定資料庫的SQL程式碼,並且把結果集從表格的表示形式轉換到一系列的物件去。NHibernate採用XML檔案配置的方式,每一個實體類都會對應一個對映檔案
2、EntitysCodeGenerate
EntitysCodeGenerate :是(VB/C#.Net實體程式碼生成工具)的簡稱,EntitysCodeGenerate(ECG)是一款專門為.Net資料庫程式開發量身定做的(ORM框架)程式碼生成工具,所生成的程式程式碼基於面向物件、分層架構、ORM及反射+工廠模式等。
3、 PetaPoco
PetaPoco是一款適用於.Net 和Mono的微小、快速、單檔案的微型ORM。
PetaPoco有以下特色:
- 微小,沒有依賴項……單個的C#檔案可以方便的新增到任何專案中。
- 工作於嚴格的沒有裝飾的Poco類,和幾乎全部加了特性的Poco類
- Insert/Delete/Update/Save and IsNew 等幫助方法。
- 分頁支援:自動得到總行數和資料
- 支援簡單的事務
- 更好的支援引數替換,包括從物件屬性中抓取命名的引數。
- 很好的效能,剔除了Linq,並通過Dynamic方法快速的為屬性賦值
- T4模板自動生成Poco類
- 查詢語言是Sql……不支援彆扭的fluent或Linq語法(仁者見仁,智者見智)
- 包含一個低耦合的Sql Builder類,讓內聯的Sql更容易書寫
- 為異常資訊記錄、值轉換器安裝和資料對映提供鉤子。(Hooks for logging exceptions, installing value converters and mapping columns to properties without attributes.)
- 相容SQL Server, SQL Server CE, MySQL, PostgreSQL and Oracle。
- 可以在.NET 3.5 或Mono 2.6或更高版本上執行
- 在.NET 4.0 和Mono 2.8下支援dynamic
- NUnit單元測試
- 開源(Apache License)
- 所有功能大約用了1500行程式碼