5.3.8 TableMapping 和 FieldMapping

TableMapping 描述应用程序中域对象与存储在数据库中的表之间的映射。 默认 表映射是将表中的每一列映射到同名字段的映射。

TableMapping = {
  String table                  :  "" ,
  String database               :  "" ,
  boolean mapAllColumns         : true,
  Array fields                  : null
};

tabledata 成员分别是表和数据库的名称。 如果 mapAllColumns 为 true,则会为 fields 中未列出的所有列创建一个默认的 FieldMapping,以便所有未显式映射的列都被赋予到同名字段的默认映射。 fields 保存一个 FieldMapping 对象数组;这也可以是单个 FieldMapping

FieldMapping 描述域对象中的单个字段。 此对象没有公共构造函数;您可以使用 TableMapping.mapField() 创建 FieldMapping,或者您可以使用 FieldMapping 文字量直接在 TableMapping 构造函数中使用。

FieldMapping = {
  String fieldName     :  "" ,
  String columnName    :  "" ,
  Boolean persistent    : true,
  Converter converter     : null
};

fieldNamecolumnName 分别是域对象中存储此字段的字段和列的名称。 如果 persistent 为 true(默认值),则该字段存储在数据库中。 converter 指定与此字段一起使用的 Converter 类(如果有)(默认为 null)。};

TableMapping 构造函数可以采用表名(可能使用数据库名称限定)或 TableMapping 文字量。

TableMapping mapField(String fieldName, [String columnName], [Converter converter], [Boolean persistent])

为映射对象的命名字段创建字段映射。 唯一的必需参数是 fieldName,它提供 JavaScript 应用程序对象中字段的名称。 其余参数是可选的,可以按任意顺序出现。 返回当前的 TableMapping 对象。

columnName 指定映射到此对象字段的数据库列的名称。 如果省略,columnName 默认为与 fieldName 相同的值。 可以使用 converter 来提供 Converter 类,该类在 JavaScript 和数据库数据类型之间执行自定义转换。 默认为 null。 persistent 指定该字段是否持久化到数据库,默认为 true。

重要

如果 persistent 为 false,则 columnNameconverter 参数可能无法使用。

TableMapping applyToClass(Function constuctor)

TableMapping 附加到映射对象的 constructor。 完成此操作后,从构造函数创建的任何对象都将视为映射实例,可以使用相关 SessionBatch 方法的几种形式。

例如,应用程序可以构造一个只完成部分的实例,然后使用 Session.load() 从数据库中填充所有映射字段。 应用程序修改实例后,Session.save() 会将其保存回去。 同样,Session.find() 可以采用映射的构造函数,根据键检索对象,然后使用构造函数创建完整的域对象。