一般的實體框架都包括以下一些功能:
### 1、與物理存儲交互
原因很簡單,數據不能總在內存里,最終還是要存起來,所以,實體框架的一個基本功能就是要解決與物理存儲之間的交互問題。這里的物理存儲主要包括文件和數據庫系統,以文件作為實體的物理存儲方式,雖然不是很普遍,但也有用武之地,一些很小的應用系統,表不多,數據之間的關系不是很復雜的情況下,也可以直接采用文件進行存儲,沒必要為這種很小的應用還附帶上一個數據庫。就是采用了數據庫,有些配置信息也可以放在文件中。
以數據庫作為實體的物理存儲方式,是目前應用系統普遍采用的一種方式,因此一般的實體框架都需要支持與數據庫進行交互的功能:
???? A)支持多種數據庫,至少要支持幾種主流的數據庫系統(屏蔽數據庫差異);
???? B)支持對數據庫的基本操作(定義,新增,修改,刪除,查詢等)
?????C)支持數據庫事務
???? D)支持緩存與數據庫之間的數據同步(這條不是必須,但好的框架至少要預留對這種需求的擴展).
2、對實體的管理
對實體的管理以下一些功能是基本的:
??? A)對實體的新增,修改,刪除和查詢并將這些操作最終反映到數據庫;
??? B)SQL語句支持(有些事情無法完全針對實體完成的時候,還是要預留這種功能)
????C)事務支持(最終要反映到數據庫事務上來,好的還會支持跨數據事務)
??? D)實體緩存服務(包括是否需要緩存,緩存機制,失效策略等),如果更進一步,還應該支持數據緩存加載條件設置(這種功能其實很簡單,但目前的很多框架都沒有這種功能)
??? E) 支持緩存還必須提供緩存與數據庫的數據同步機制;
??? F)如果支持緩存,也必須提供并發沖突檢測和處理機制;
??? 有些功能還提供一些更強大的功能:
???? A)實體高級查詢,比如關聯查詢,子查詢等。例如ESQL跟SQL就很相似。
???? B)實體操作的批處理。
?????C)實體操作類的單例、多例模式支持
上面列的基本都是實體框架應該提供的一些基本功能,還有一些實體有效性檢查之類的功能,可以集成在這里,也可以不集成在這里,但一些規則性的東西還是需要提供,比如以元屬性方式提供校驗規則等。
???