美文网首页
第三十八章 持久对象和SQL - 持久类的特殊选项

第三十八章 持久对象和SQL - 持久类的特殊选项

作者: Cache技术分享 | 来源:发表于2023-09-27 08:43 被阅读0次

    第三十八章 持久对象和SQL - 持久类的特殊选项

    持久类的特殊选项

    IRIS 中,所有持久类都在中扩展 %Library.Persistent(也称为 %Persistent)。此类为 IRIS 中的对象 SQL 对应关系提供了大部分框架。在持久类中,有如下选项:

    • 能够使用方法打开、保存和删除对象。

    当打开持久对象时,可以指定并发锁定的程度,因为持久对象可能会被多个用户或多个进程使用。

    当打开对象实例并引用对象值属性时,系统也会自动打开该对象。此过程称为混合。然后也可以使用该对象。在下面的示例中,当打开 Sample.Person 对象时,会混合相应的 Sample.Address 对象:

     Set person=##class(Sample.Person).%OpenId(10)
     Set person.Name="Andrew Park"
     Set person.Address.City="Birmingham" 
     Do person.%Save()
    
    import iris
    person=iris.cls("Sample.Person")._OpenId(10)
    person.Name="Andrew Park"
    person.Address.City="Birmingham"
    person._Save()
    

    类似地,当你保存一个对象时,系统也会自动保存它的所有对象值属性;这称为深度保存。可以选择执行浅保存。

    • 能够使用默认查询(范围查询),该查询是包含此类对象数据的 SQL 结果集。默认情况下,范围查询返回范围内的现有 ID。可以对其进行修改以返回更多列。

    在此类(或其他类)中,可以定义其他查询。

    • 能够定义作为外键映射到 SQL 的类之间的关系。

    关系是一种特殊类型的对象值属性,它定义两个或多个对象实例如何相互关联。每个关系都是双面的:对于每个关系定义,都有一个相应的逆关系定义另一面。 IRIS 自动强制执行数据的引用完整性,一侧的任何操作在另一侧立即可见。关系自动管理它们在内存中和磁盘上的行为。它们还提供了优于对象集合的扩展性和并发性(请参阅集合类)。

    • 能够定义外键。在实践中,可以添加外键来向现有应用程序添加引用完整性约束。对于新应用程序,定义关系更简单。
    • 能够在这些类中定义索引。

    索引提供了一种优化跨持久类实例的搜索的机制;它们定义了与某个类相关的常用请求数据的特定排序子集。它们对于减少性能关键型搜索的开销非常有帮助。

    索引可以根据属于其类别的一个或多个属性进行排序。这使可以对返回结果的顺序进行大量特定控制。

    此外,索引还可以存储基于排序属性的查询经常请求的附加数据。通过包含附加数据作为索引的一部分,可以极大地提高使用索引的查询的性能;当查询使用索引生成其结果集时,它可以在不访问主数据存储设施的情况下执行此操作。

    • 能够在这些类中定义触发器来控制插入、修改或删除行时发生的情况。
    • 能够将方法和类查询映射为 SQL 存储过程。
    • 能够微调 SQL 的映射(例如,指定 SQL 查询中看到的表和列名称)。
    • 能够微调存储对象数据的Global的结构。

    注意:无法在 Python 中定义关系、外键或索引。

    相关文章

      网友评论

          本文标题:第三十八章 持久对象和SQL - 持久类的特殊选项

          本文链接:https://www.haomeiwen.com/subject/wvhkbdtx.html