第 4 天:使用 InterSystems Objects 和 SQL 进行开发
我正在参加 Joel Solon 讲授的“使用 InterSystems Objects 和 SQL 进行开发”课程。 课程非常好,我将在这里分享一些从培训中总结的提示。
第 4 天的提示:
1. 所有数据都存储在global中,global名称以 ^ 开头。 global示例:^animal。 global可以有多个数据位置(“子数据”)。 示例:^animal("大象","吃草")。
2. 可从任意系统范围(命名空间)访问 ^%* global。
3. global使 IRIS 能够支持多模型数据(对象、关系、文档、多维等)。
4. 要查看global,请转到 Management Portal > Explorer > Globals > Select Global > View,或者在终端中输入 do ^%G 或 zwrite ^global。
5. 在持久类和 SQL 表之间有自动对应关系:
- 包对应于是 SQL Schema;
- 类是Table;
- 属性是列;
- 方法是存储过程(使用 sqlProc 时);
- 类之间的关系是 SQL 外键约束(必须为双向)。
- 对象是行。
6. 一个表可以对应多个类,但序列类serial是持久类表的一部分(没有特定的表)。
7. 一个类可以对应多个表。
8. 我们有一些类类型:
- Non-registered:不是类对象(仅限方法的容器);
- Registered:瞬态对象;
- Persistent:类似于SQL表中持久化保存;
- Serial:嵌入主持久化表中的持久表(Serial为嵌入式);
- Datatype:非类对象用于执行新的验证和转换为基础数据类型。
9. 类的组成可包括:
- 属性;
- 方法;
- Class queries:SQL Select 语句;
- Parameters:配置类行为的用户常量或系统常量;
- 外键:参照完整性;
- 索引:提高性能并创建独特值;
- 触发器:触发与持久性事件关联的方法;
- XData:与该类关联的 XML 或 JSON 定义;
- 存储:数据存储的描述。
10. 按照惯例,类的首字母大写。 示例:CountryOrigin。 参数均为大写。 示例:COLORNUMBER。
11. 类特性限定/配置一个类。 示例 [SqlTableName = Animal] 可设置SQL表名。 [Final] 不允许继承。 [Private] 不允许为非子类调用方法或使用属性。
12. IRIS 在内部生成 Get 和 Set 属性,这些属性不可见,但可以通过声明改变行为。
13. 可以重写超类的方法,为此,请重复类名、参数。 可以增加参数的数量,不可减少。
14. 使用 ##super() 调用基类方法。
15. 要创建抽象类,请使用 [Abstract] 并防止实例化。
16. 可以继承多个类。 例如,Class Person extends (%Persistent, %Animal)。 (Persistent 必须是 extends 中的第一个类,参见评论中 joel 的提示)
17. REST 是表述性状态转移。 它基于 HTTP 协议。 使用 HTTP 谓词:GET(选择)、POST(插入)、PUT(更新)和 DELETE(删除)。
18. 要将您的类作为 REST 资源公开,请从 %CSP.REST 扩展。
19. 在 XData 块中使用 URLMap 配置 REST 服务的路由。 使用门户,创建一个 Web 应用程序,启用 REST 并指定 Dispatch 类。
20. %JSONAdaptor 提供了对象与 JSON 之间的转换。 使用 obj.%JSONImport(jsonObj) 将 DynamicObject 分配到对象。 使用 obj.%JSONExportToString(.jsonString) 将 JSON 字符串写入对象。
21. %JSON.Formatter 格式化 JSON 字符串以便人类阅读。