EODelegateOperating
2007/03/30 (Fri) 22:07:46 JST
EOFはデータベースに変更内容を保存する際、オブジェクトの変更をデータベース操作オブジェクトに変換します。 デッドロックを回避するため特定の順序でデータベースを操作しなければならないなどの場合、デリゲートを使ってデータベース操作の順序を変更します。
データベース操作の順序を変更するEODatabaseContextのデリゲートメソッドは2つあり、どちらも同じ目的と戻り値を持ちますが、渡される引数が異なります。 ただ順序を並び替えるだげならば"willPerform"メソッドのほうが手軽です。
EODatabaseContext.databaseContextWillOrderAdaptorOperations
- performChangesからら呼ばれ、データベース操作の順序を決める。 データベースレベルの操作オブジェクト(?EODatabaseOperataion)が渡されるため、自分でアダプタレベルの操作オブジェクト(?EOAdaptorOperation)を組み立てる必要がある。 ただし、その分"willPerform"メソッドよりも柔軟にデータベース操作の順序を変更できる。
EODatabaseContext.databaseContextWillPerformAdaptorOperations
- databaseContextWillPerformAdaptorOperationsの次に呼ばれ、データベース操作の順序を決める。 アダプタレベルの操作オブジェクト(?EOAdaptorOperation)が渡されるので、このオブジェクトを並び替えるだけでデータベース操作の順序を変更できる。
EOAdaptorChannel.adaptorChannelWillPerformOperations
- performAdaptorOperationsから呼ばれ、データベース操作の順序を決める。 基本的にはdatabaseContextWillPerformAdaptorOperationsと同じだか、nullを返すと何もデータベース操作を行わない。
Inverse Pages: EODelegateSaving WebObjects基礎研究室