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,或者可以直接在 TableMapping 建構子中使用 FieldMapping 常值。

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() 可以使用已對應的建構子,根據索引鍵擷取物件,然後使用建構子建立完整的網域物件。