跳转至内容

WebObjects/数据库开发

来自维基教科书,开放的书籍,开放的世界

如果您习惯于使用 SQL 的思维方式,WO(实际上是 EOF)处理行(对象)的方式可能会让人困惑。使用 WO 处理数据库行的总体思路是


获取初始对象集

[编辑 | 编辑源代码]

要从持久层获取对象(从数据库中检索记录,这些记录将在运行时被转换为 EnterpriseObjects),请执行以下操作

- 创建您的 EOModel 或获取适合的 EOModel

- 声明您要存储企业对象的 NSArray,这些企业对象将由表的行转换为

- 建立您的编辑上下文,“ec”(对于简单情况,只需使用 WOSession.defaultEditingContext,否则,请确保锁定/解锁)。

- 创建一个 EOQualifier(如果您想过滤来自特定表的对象)

- 创建一个 EOSortOrderings 集合(如果您希望在检索记录时预先排序)

- 创建一个 EOFetchSpecification,fs,将获取操作绑定在一起

- 执行 ec.objectsWithFetchSpecification(fs);


[编辑 | 编辑源代码]

要获取与您已获取的任何 EnterpriseObjects 相关的任何对象(具有 EORelationship),只需像引用由另一个 POJO(Plain Old Java Object)引用的任何对象一样引用它们。该引用足以让 WO “引发错误”,从而自动为您检索引用的对象。


更新对象

[编辑 | 编辑源代码]

如果您已经完成了从数据库获取对象的足够操作,那么要更新记录,只需更新对象的相应字段(最好使用 get/set 方法)并执行

 ec.saveChanges();


创建新对象

[编辑 | 编辑源代码]

虽然有很多方法可以做到这一点,但最安全且可能最有效的方法是使用

 EOUtilities.createAndInsertInstance(ec, "myNewEntitiesName");
 ec.saveChanges();


删除对象

[编辑 | 编辑源代码]

要删除对象,首先必须显式地从 ec 中删除它,然后保存更改

 ec.deleteObject(myObject);
 ec.saveChanges();


关联对象

[编辑 | 编辑源代码]

如果您有两个具有 EORelationship 的 EnterpriseObject 类,例如一对多关系,如下所示

 A <-->> B

  objectA
     className
     myBs  ( -->>B )
 objectB
    name
    myA  ( -->A )


那么要创建两个这样的对象并将它们彼此关联,您需要

   myA = (A)EOUtilities.createAndInsertInstance(ec, "A");
   myB = (B)EOUtilities.createAndInsertInstance(ec, "B");
   myA.addObjectToBothSidesOfRelationshipWithKey(b, "myBs");
   //  set other attributes of both myA and myB here.
   ec.saveChanges();

当然,您也可以使用

   myB.addObjectToBothSidesOfRelationshipWithKey(a, "myA");

需要注意的是,addObjectToBothSidesOfRelationshipWithKey 方法只需要在一个对象上使用一次,就可以在两个方向上建立关系,无论关系是 toOne 还是 toMany,以及关系是双向的还是单向的。这是一个非常有用的方法。

另请参阅 removeObjectFromBothSidesOfRelationshipWithKey,它用于删除关系。


关于编辑上下文的一些说明

[编辑 | 编辑源代码]

一般来说,请记住编辑上下文的目的是为您的程序提供一个运行时上下文,在这个上下文中,每个 EnterpriseObject 都是唯一的(在编辑上下文中),并且您可以在该编辑上下文中创建、添加、更新和删除对象。但是,一般来说,您在编辑上下文中所做的任何操作都不会反映在数据库中,直到您执行 ec.saveChanges()。然后,您自上次 saveChanges() 以来所做的所有更改都将提交到数据库。

当然,上述内容有一些例外情况,但这应该是您记住它的最佳方式。


当然,还有很多关于 WebObjects 的内容需要了解,但了解上述内容应该能帮助您很多,至少能为您提供在 API 参考中查找许多想法的线索。


如果您是 WO 的新手,请务必阅读EOF 诫律,以避免一些严重的问题。

如果您对任何诫律都不了解,请咨询他人。

华夏公益教科书