[ASP.NET]91之ASP.NET由淺入深 不負責講座 Day30 – ORM introduction
前言
前面29天,大致上已經把.Net 2.0 Webform的基礎與一些概念都介紹完了。
接下來的模組其實都比較獨立出來,今天要講的是O/R mapping的簡介。ORM可以寫成一整書也不嫌少,所以我這邊只先蜻蜓點水的點出一點概念。
Issues
定義
Object Relational Mapping,物件與關連式資料庫對應技術
簡單的說
1. 將原本資料庫中的資料表(可能是根據幾個資料表的關係,組成的某個資料集合)對應為一個物件集合,將資料列對應為一個物件,將欄位對應成物件的一個屬性。
2. 讀取關連式資料庫資料出來後,經過ORM,就可以透過物件的方式去使用該資料集合。
3. 也可透過物件的方式,定義物件的行為,而來對關連式資料庫進行CRUD。
目的
Developer面對的是物件,而不是一堆資料表、資料列。物件、類別的定義,可以回頭想想,類別是抽象的集合。有屬性、有行為,有OO的特性,絕對比攤開看不出關係的dataset好懂,reuse也會比較高,也會比較穩定跟抽象。
Domain model mapping,可以根據domain model設計出更穩定的系統。
透過ORM定義的語法,比起SQL來說,程式的可維護性更高
1. 可攜性
2. 會透過ORM framework,可以把注意力focus在物件的操作與使用,而不用因為不同的DBMS就寫不同套的方法做一樣的事。
3. 比較正式的ORM framework會將自己定義的語法,根據不同的DBMS轉成對應可執行的SQL statement。
注意
Performance問題:開發效率提升,但執行效率容易有隱憂。轉換SQL對應的問題,通常結果不會錯,但效率可能會很差。所以要去瞭解最後轉出來的SQL statement有沒問題。
迷思
學會ORM就不需要學SQL了?學jQuery也得懂JavaScript本身的特性、意義跟用法。ORM只是關連性資料庫與物件中間的橋樑,而SQL才是資料庫的語言,ORM只是協助轉換。所以SQL的觀念、基本語法還是都要具備,用起ORM才能得心應手,才能用的更正確、更精準。
比較常見的ORM framework
- NHibernate
- LINQ to SQL
- ADO.NET Entity framework: 通常使用LINQ to Entity Framewor
Reference
blog 與課程更新內容,請前往新站位置:http://tdd.best/