什麼是ORM? ORM的全稱是Object Relational Mapping,即對象關係映射。它的實現思想就是將關係資料庫中表的數據映射成為對象,以對象的形式展現,這樣開發人員就可以把對資料庫的操作轉化為對這些對象的操作。因此它的目的是為了方便開發人員以面向對象的思想來實現對資料庫的操作。 OR ...
什麼是ORM?
ORM的全稱是Object Relational Mapping,即對象關係映射。它的實現思想就是將關係資料庫中表的數據映射成為對象,以對象的形式展現,這樣開發人員就可以把對資料庫的操作轉化為對這些對象的操作。因此它的目的是為了方便開發人員以面向對象的思想來實現對資料庫的操作。
ORM實現原理
¤對象到資料庫的映射; ¤對象與資料庫數據的互相轉換; 重量級ORM以EntityFramework、NHibernate為代表
¨優點 面向對象方式訪問資料庫,擺脫SQL 可移植性強,支持所有流行的資料庫 面向介面的設計,可擴充性強 對事務、緩存(一級緩存)有良好的封裝及配置 ¨缺點 比較複雜,學習曲線大; 處理對象關聯很容易出錯; 不適合統計查詢系統; 對於多表連查,複雜的sql實現比較複雜,而且有可能需要藉助其他方案; 自動生成的sql查詢執行效率低; 對於大數據量、高負載場景需要慎重考慮; 實現良好的二級緩存很困難,並且只能定製; 輕量級ORM
|
簡介 |
License |
優點 |
缺點 |
dapper |
單文件、迷你orm框架,支持poco及動態類型 http://code.google.com/p/dapper-dot-net |
Apache License 2.0 可以免費商用 |
執行效率高 單個文件,無其他依賴 |
使用poco時,屬性與資料庫表的映射無法靈活配置,難以實現Repository模式 |
Massive |
單文件僅幾百行代碼,僅支持動態類型 http://blog.wekeroad.com/helpy-stuff/and-i-shall-call-it-massive |
New BSD License 可以免費商用 |
執行效率高 單個文件,無其他依賴 |
無法使用poco |
PetaPoco |
單文件、迷你orm框架,支持poco http://www.toptensoftware.com/petapoco |
Apache License 2.0 可以免費商用 |
執行效率高 單個文件,無其他依賴 poco與資料庫表的映射可以靈活配置 |
密集執行sql時有bug(已修複) |
對象關聯、事務、緩存等高級特性支持較少。
PetaPoco特性 國內一家sns產品近乎,用的就是petapoco,具體代碼情況,可以下載他們的免費源碼版本瞭解一下關於petapoco的使用情況,源碼地址:http://www.jinhusns.com/Products/Download?type=whp
特性 |
支持情況 |
POCO |
支持 |
自增ID支持 |
支持 |
枚舉類型支持 |
支持 |
事務 |
支持(但是要求事務內的操作必須在一個PetaPoco database 實例內) |
Stored Procedures |
支持 |
基於資料庫自動生成POCO |
支持 |
SQL跟蹤 |
支持 |
支持SQL Server2005~2008r2 |
支持 |
支持MySQL |
支持 |