Dorado 9 : 01. 数据模型对象的总体介绍

本文涉及的对象包括Entity/EntityList、DataType、DataProvider、DataResolver、DataSet、DataPath。由于这些对象之间有着比较密切的关联关系,因此我们将它们放在一起做一个总体的介绍。

Entity/EntityList

Entity、EntityList分别表示数据实体和数据实体的集合,是Dorado中展现数据的载体。

数据实体特指那些可以包含一到多个属性的数据对象,数据实体在Dorado的服务端通常表现为POJO Bean,而在Dorado的客户端则有具体的实现类--dorado.Entity。

数据实体的集合更加容易理解,它表示数据实体的集合。在Dorado的服务端EntityList通常表现为List或Set的实例,而在Dorado的客户端则是dorado.EntityList的实例。

DataType

DataType即数据类型,是dorado中全新的、最关键的概念。

  • DataType实现的功能有点类似复杂的数据字典,用于描述各种数据。例如描述某数据实体中每个属性的标题、显示格式、校验规则等等。
  • 对于基于ORM开发的Web应用而言,dorado能够自动的根据VO的Class类型为其分配适当的DataType。
  • DataType可以描述通常所见的所有类型的数据,既包含用户定义的POJO,也包含了Java中的简单数据类型。
    例如我们定义一个DataType用来描述系统中的java.util.Date这种数据,这样我们就可以通过DataType为所有的日期类数据定义默认的输出格式。
  • DataType是一种在服务端和客户端都存在生命周期的对象,即在服务端和客户端都可以使用,因此DataType还支持一些在客户端才有的特性,例如EntityDataType支持名为afterDataChanged的客户端事件,每当有属于该类型的实体对象的某属性值在客户端被修改时,此事件就会被触发。

DataProvider

DataProvider顾名思义就是数据提供者,是一种用于为dorado展现层提供数据的对象。

  • DataProvider通常的作用是根据其自身的定义和外部传入的参数调用后台业务逻辑层的业务方法,并对得到的返回加以封装,变成展现数据然后返回给外界。
  • 尽管DataType具有自动根据数据的Class类型进行映射的功能,不过我们仍然可以通过DataProvider的resultDataType属性为将要返回的数据手工指定DataType。
  • DataProvider具有类型的概念,可以用不同类型的DataProvider封装不同种的展现数据获取方式。用户可以创建自己的DataProvider类型。如同目前Dorado5中的Dataset也可以有各种类型。

DataResolver

DataResolver可翻译为数据处理器,是一种用于将dorado中的展现数据提供给后台业务逻辑层的对象。

  • DataResolver的作用大致与DataProvider相反,一般而言DataResolver调用的都是后台业务逻辑层中与数据持久化相关的操作。
  • DataResolver也具有类型的概念,不同类型的DataResolver封装有不同种的展现数据处理或持久化方式。用户也可以创建自己的DataResolver类型。

DataSet

DataSet是一种不可见的Widget。

  • DataSet最主要的生命周期是在客户端,主要作用是用于包含展现数据。主要作用是为一组展现数据起个别名,以便于数据敏感控件和开发人员使用他们,而DataSet的id就是这堆展现数据的别名。
  • DataSet本身是一个轻量级对象,与Dorado5中的Dataset不同,它没有类型之分。DataSet中所包含的数据由其中的DataProvider所返回的数据决定。
  • DataSet支持利用DataPath来对其中的数据进行快速的挖掘。

DataPath

DataPath可称为数据路径。

  • DataPath是在Dorado的客户端所使用的,用于描述如何提取、挖掘数据的表达式。其作用比较类似于XML中所使用的XPath。

结合上面的介绍我们总体的来看一下这些对象在Web应用数据环路中的作用和所处的位置。见下图:

可能仅仅如此,你还不是不能对这些新概念有一个准确的认识。下面我们用大家都比较熟悉的数据库来打个比方。见下图:

  • 在上图中DataSet位于图的最中间,我们可以把DataSet比作数据库。
  • DataSet中包含具体的数据载体,这些数据载体就像是数据库中的表和记录。EntityList就相当于表,Entity就相当于表中的记录。
  • DataType是用于描述数据的,它就像是数据库中的Schema(也就是表和字段定义)。
  • DataProvider和DataResolver比较容易理解,一个用于为DataSet提供后台业务逻辑层中数据,一个用于将DataSet中的数据提取出来交给后台业务逻辑层。
  • DataPath是一种表达式,作用就相当于我们常用的SQL,用于从DataSet提取数据。

Attachments:

datamode_1.png (image/png)
datamode_2.png (image/png)