跳轉至內容

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 誡律,以避免一些嚴重的問題。

如果您對任何誡律都不瞭解,請諮詢他人。

華夏公益教科書