[TOC]數據庫
下圖是一個最簡單的映射圖session
下圖是一個比較完整的映射圖,包含了一對多,多對一這種映射關係.數據結構
數據持久化,就是將數據(就是變量裏面的值)保存起來(從內存等掉電丟失的設備 --> 硬盤等掉電能夠恢復的設備上),以便未來用到的時候可以很方便的恢復.在ORM這裏特指將數據保存到數據庫.app
因此本文中的數據持久化就是將內存中的數據模型(任何數據結構或對象)轉換爲存儲模型(關係模型,XML,二進制流),以及將存儲模型轉換爲內存中的數據模型的統稱.dom
數據模型能夠是任何數據結構或對象模型,存儲模型能夠是關係模型,XML,二進制流等.學習
持久化封裝了數據訪問細節.fetch
數據模型若是是面向對象方式,也叫domain model .spa
ORM裏面分紅兩種類型.code
持久化過程和domain model關係比較緊密,或者說,domain model集成了持久化過程的方法,這種模式就叫作Active Record.對象
Ruby On Rails裏面的ORM好像也叫Active Record,與本文中的Active Record不是一個概念.固然ROR中的Active Record也是Active Record類型.
例子
user_record = User(name="ed", fullname="Ed Jones") user_record.save() user_record = User.query(name='ed').fetch() user_record.fullname = "Edward Jones" user_record.save()
domain model和持久化過程是分開的.
例子,看主體
dbsession = start_session() # 持久化 user_record = User(name="ed", fullname="Ed Jones") # domain model dbsession.add(user_record) # 持久化 user_record = dbsession.query(User).filter(name='ed').first() # 持久化 user_record.fullname = "Edward Jones" # domain model dbsession.commit() # 持久化
Active Record
Data Mapper