オブジェクト ID と Oref
オブジェクト ID と oref の違いは何でしょうか。
オブジェクト ID は、保存されているオブジェクトに対する永久識別子です。オブジェクト ID は変更することができません。そして、データベース内のオブジェクトの配置や削除のために、常に使用されます。
一方、oref は、メモリ内のオブジェクトにアクセスするときに使用される、一時的な識別子です。オブジェクトがメモリから削除された場合、その oref はそれ以降有効ではありません。同じオブジェクトが次にメモリに返された場合、別の oref を持ちます。
この Show オブジェクトを終了したとき、それは自動的にメモリから削除されます。
—Utils.AddShow—
Utils.AddShow
ClassMethod AddShow(ShowID As %String)
{
// Get an order object
If $data(%session.Data("Order")) {
Set ord = ##class(Cinema.TicketOrder).%OpenId(%session.Data("Order"))
}
Else {
Set ord=##class(Cinema.TicketOrder).%New()
// ...
}
// Create a new TicketItem object
Set itm = ##class(Cinema.TicketItem).%New()
// Connect to a Show object
Set shw = ##class(Cinema.Show).%OpenId(ShowID)
Set itm.Show = shw
// Connect to the Order object
Set itm.TicketOrder = ord
// ...
// Save incomplete order and remember its Id in %session.
Do ord.%Save()
Set %session.Data("Order") = ord.%Id()
}