數(shù)據(jù)模型對象的總體介紹

2024-03-07 18:38 更新

本文涉及的對象包括Entity/EntityList、DataType、DataProvider、DataResolver、DataSet、DataPath。由于這些對象之間有著比較密切的關(guān)聯(lián)關(guān)系,因此我們將它們放在一起做一個總體的介紹。

Entity/EntityList

Entity、EntityList分別表示數(shù)據(jù)實體和數(shù)據(jù)實體的集合,是Dorado中展現(xiàn)數(shù)據(jù)的載體。 數(shù)據(jù)實體特指那些可以包含一到多個屬性的數(shù)據(jù)對象,數(shù)據(jù)實體在Dorado的服務(wù)端通常表現(xiàn)為POJO Bean,而在Dorado的客戶端則有具體的實現(xiàn)類--dorado.Entity。 數(shù)據(jù)實體的集合更加容易理解,它表示數(shù)據(jù)實體的集合。在Dorado的服務(wù)端EntityList通常表現(xiàn)為List或Set的實例,而在Dorado的客戶端則是dorado.EntityList的實例。

DataType

DataType即數(shù)據(jù)類型,是dorado7中全新的、最關(guān)鍵的概念。

  • DataType實現(xiàn)的功能有點類似復(fù)雜的數(shù)據(jù)字典,用于描述各種數(shù)據(jù)。例如描述某數(shù)據(jù)實體中每個屬性的標(biāo)題、顯示格式、校驗規(guī)則等等。

  • 對于基于ORM開發(fā)的Web應(yīng)用而言,dorado能夠自動的根據(jù)VO的Class類型為其分配適當(dāng)?shù)腄ataType。
  • DataType可以描述通常所見的所有類型的數(shù)據(jù),既包含用戶定義的POJO,也包含了Java中的簡單數(shù)據(jù)類型。例如我們定義一個DataType用來描述系統(tǒng)中的java.util.Date這種數(shù)據(jù),這樣我們就可以通過DataType為所有的日期類數(shù)據(jù)定義默認(rèn)的輸出格式。

  • DataType是一種在服務(wù)端和客戶端都存在生命周期的對象,即在服務(wù)端和客戶端都可以使用,因此DataType還支持一些在客戶端才有的特性,例如EntityDataType支持名為afterDataChanged的客戶端事件,每當(dāng)有屬于該類型的實體對象的某屬性值在客戶端被修改時,此事件就會被觸發(fā)。

    DataProvider

    DataProvider顧名思義就是數(shù)據(jù)提供者,是一種用于為dorado展現(xiàn)層提供數(shù)據(jù)的對象。

  • DataProvider通常的作用是根據(jù)其自身的定義和外部傳入的參數(shù)調(diào)用后臺業(yè)務(wù)邏輯層的業(yè)務(wù)方法,并對得到的返回加以封裝,變成展現(xiàn)數(shù)據(jù)然后返回給外界。

  • 盡管DataType具有自動根據(jù)數(shù)據(jù)的Class類型進(jìn)行映射的功能,不過我們?nèi)匀豢梢酝ㄟ^DataProvider的resultDataType屬性為將要返回的數(shù)據(jù)手工指定DataType。

  • DataProvider具有類型的概念,可以用不同類型的DataProvider封裝不同種的展現(xiàn)數(shù)據(jù)獲取方式。用戶可以創(chuàng)建自己的DataProvider類型。如同目前Dorado5中的Dataset也可以有各種類型。

DataResolver

DataResolver可翻譯為數(shù)據(jù)處理器,是一種用于將dorado中的展現(xiàn)數(shù)據(jù)提供給后臺業(yè)務(wù)邏輯層的對象。

  • DataResolver的作用大致與DataProvider相反,一般而言DataResolver調(diào)用的都是后臺業(yè)務(wù)邏輯層中與數(shù)據(jù)持久化相關(guān)的操作。
  • DataResolver也具有類型的概念,不同類型的DataResolver封裝有不同種的展現(xiàn)數(shù)據(jù)處理或持久化方式。用戶也可以創(chuàng)建自己的DataResolver類型。

DataSet

DataSet是一種不可見的Widget。

  • DataSet最主要的生命周期是在客戶端,主要作用是用于包含展現(xiàn)數(shù)據(jù)。主要作用是為一組展現(xiàn)數(shù)據(jù)起個別名,以便于數(shù)據(jù)敏感控件和開發(fā)人員使用他們,而DataSet的id就是這堆展現(xiàn)數(shù)據(jù)的別名。

  • DataSet本身是一個輕量級對象,與Dorado5中的Dataset不同,它沒有類型之分。DataSet中所包含的數(shù)據(jù)由其中的DataProvider所返回的數(shù)據(jù)決定。

  • DataSet支持利用DataPath來對其中的數(shù)據(jù)進(jìn)行快速的挖掘。

DataPath

DataPath可稱為數(shù)據(jù)路徑。

  • DataPath是在Dorado的客戶端所使用的,用于描述如何提取、挖掘數(shù)據(jù)的表達(dá)式。其作用比較類似于XML中所使用的XPath。

結(jié)合上面的介紹我們總體的來看一下這些對象在Web應(yīng)用數(shù)據(jù)環(huán)路中的作用和所處的位置。見下圖: 可能僅僅如此,你還不是不能對這些新概念有一個準(zhǔn)確的認(rèn)識。下面我們用大家都比較熟悉的數(shù)據(jù)庫來打個比方。見下圖: 在上圖中DataSet位于圖的最中間,我們可以把DataSet比作數(shù)據(jù)庫。

  • DataSet中包含具體的數(shù)據(jù)載體,這些數(shù)據(jù)載體就像是數(shù)據(jù)庫中的表和記錄。EntityList就相當(dāng)于表,Entity就相當(dāng)于表中的記錄。
  • DataType是用于描述數(shù)據(jù)的,它就像是數(shù)據(jù)庫中的Schema(也就是表和字段定義)。
  • DataProvider和DataResolver比較容易理解,一個用于為DataSet提供后臺業(yè)務(wù)邏輯層中數(shù)據(jù),一個用于將DataSet中的數(shù)據(jù)提取出來交給后臺業(yè)務(wù)邏輯層。
  • DataPath是一種表達(dá)式,作用就相當(dāng)于我們常用的SQL,用于從DataSet提取數(shù)據(jù)。# 數(shù)據(jù)模型對象的總體介紹
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號