Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

オブジェクト 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()
}
FeedbackOpens in a new tab