病毒營銷網(wǎng)站中國seo公司
文章目錄
- 第四十一章 持久對象和SQL - Storage
- Storage
- 存儲定義概覽
- 持久類使用的`Globals`
- 注意
第四十一章 持久對象和SQL - Storage
Storage
每個持久類定義都包含描述類屬性如何映射到實際存儲它們的Global
的信息。類編譯器為類生成此信息,并在修改和重新編譯時更新它。
存儲定義概覽
查看此信息可能很有用,在極少數(shù)情況下,可能需要更改一些詳細(xì)信息(非常仔細(xì))。對于持久類,集成開發(fā)環(huán)境 (IDE
) 將顯示類似以下內(nèi)容作為類定義的一部分:
<Storage name="Default">
<Data name="PersonDefaultData"><Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Name</Value>
</Value>
<Value name="3">
<Value>SSN</Value>
</Value>
<Value name="4">
<Value>DOB</Value>
</Value>
...
</Storage>
持久類使用的Globals
存儲定義包括幾個指定存儲數(shù)據(jù)的Globals
的元素:
<DataLocation>^Sample.PersonD</DataLocation>
<IdLocation>^Sample.PersonD</IdLocation>
<IndexLocation>^Sample.PersonI</IndexLocation>
...
<StreamLocation>^Sample.PersonS</StreamLocation>
默認(rèn)情況下,使用默認(rèn)存儲:
- 類數(shù)據(jù)存儲在該類的
Globals
數(shù)據(jù)中。它的名稱以完整的類名(包括包名)開頭。名稱后附加D
。例如:Sample.PersonD
- 索引數(shù)據(jù)存儲在該類的
Globals
索引中。其名稱以類名開頭并以I
結(jié)尾。例如:Sample.PersonI
- 任何保存的流屬性都存儲在該類的流
Globals
中。它的名稱以類名開頭并以S
結(jié)尾。例如:Sample.PersonS
重要提示:如果完整的類名很長,系統(tǒng)會自動使用類名的哈希形式。因此,當(dāng)查看存儲定義時,有時可能會看到Gloabl
名稱,例如 ^package1.pC347.VeryLongCla4F4AD
。如果出于任何原因打算直接使用類的數(shù)據(jù)Globals
,請務(wù)必檢查存儲定義,以便了解Gloabl
的實際名稱。
注意
請注意以下幾點:
- 切勿重新定義或刪除已存儲數(shù)據(jù)的類的存儲。如果這樣做,則必須手動重新創(chuàng)建存儲,因為下次編譯類時創(chuàng)建的新默認(rèn)存儲可能與該類所需的存儲不匹配。
- 在開發(fā)過程中,可能想要重置類的存儲定義。如果還刪除了數(shù)據(jù)并稍后重新加載或重新生成數(shù)據(jù),則可以執(zhí)行此操作。
- 默認(rèn)情況下,當(dāng)在開發(fā)過程中添加和刪除屬性時,系統(tǒng)會通過稱為模式演化的過程自動更新存儲定義。
例外情況是對 <Type>
元素使用非默認(rèn)存儲類。默認(rèn)為%Storage.Persistent
;如果不使用此存儲類別,IRIS
不會更新存儲定義。