|
WebObjects 5.2.3 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.webobjects.eocontrol.EOFetchSpecification
EOFetchSpecificationは、リレーショナルデータベースなどの外部リポジトリかEOEditingContextなどの内部ストアから、レコードやエンタープライズオブジェクトの集合を選択・順序付ける基準をまとめます。 EOFetchSpecificationは次の要素を含みます。
EOFetchSpecificationが最もよく使われるメソッドは、EOObjectStore、EOEditingContext、EODatabaseContextで定義されている objectsWithFetchSpecification
です。
また、EOAdaptorChannelとEODatabaseChannelもEOFetchSpecificationを使うメソッドを定義しています。
Nested Class Summary |
Nested classes inherited from class com.webobjects.foundation.NSCoding |
NSCoding.Support |
Nested classes inherited from class com.webobjects.eocontrol.EOKeyValueArchiving |
EOKeyValueArchiving.Awaking, EOKeyValueArchiving.FinishInitialization, EOKeyValueArchiving.Support |
Constructor Summary | |
EOFetchSpecification()
EOFetchSpecificationを生成します。 |
|
EOFetchSpecification(String entityName,
EOQualifier qualifier,
NSArray sortOrderings)
指定した引数を使ってEOFetchSpecificationを生成します。 |
|
EOFetchSpecification(String entityName,
EOQualifier qualifier,
NSArray sortOrderings,
boolean usesDistinct,
boolean isDeep,
NSDictionary hints)
指定した引数を使って新しくEOFetchSpecificationを生成します。 |
Method Summary | |
Class |
classForCoder()
オブジェクトがエンコードされる前に、コーダーのクラスを置き換えることができます。 |
Object |
clone()
java.lang.Cloneable インターフェースの実装です。 |
static Object |
decodeObject(NSCoder coder)
coder が保持する型情報とデータを元に、オブジェクトを(再度)生成します。 |
static Object |
decodeWithKeyValueUnarchiver(EOKeyValueUnarchiver unarchiver)
unarchiver の情報を元にオブジェクトを(再度)生成します。
|
void |
encodeWithCoder(NSCoder coder)
オブジェクトの型情報とデータを coder に書き込みます。 |
void |
encodeWithKeyValueArchiver(EOKeyValueArchiver archiver)
オブジェクトの型情報とデータを archiver に書き込みます。
|
String |
entityName()
フェッチするエンティティ名を返します。 |
boolean |
fetchesRawRows()
rawRowKeyPaths が null 以外の値を返すかどうかを返します。
|
int |
fetchLimit()
フェッチするオブジェクトの最大数の制限を返します。 |
static EOFetchSpecification |
fetchSpecificationNamed(String name,
String entityName)
フェッチするエンティティ名を entityName に、フェッチ仕様名を name にしたEOFetchSpecificationオブジェクトを生成して返します。
|
EOFetchSpecification |
fetchSpecificationWithQualifierBindings(NSDictionary bindings)
バインディング bindings が存在すればフェッチ条件に設定し、新しいフェッチ仕様オブジェクトを返します。 |
NSDictionary |
hints()
フェッチ操作を最適化・変更するヒントとして設定されているオブジェクトを返します。 |
boolean |
isDeep()
サブエンティティも含めてフェッチするならば true を、そうでなければ false を返します。
|
boolean |
locksObjects()
データリポジトリからフェッチするオブジェクトをロックするのであれば true を、そうでなければ false を返します。
|
NSArray |
prefetchingRelationshipKeyPaths()
メインのエンティティのフェッチ時に、一緒にフェッチしておくリレーションシップキーパスの配列を返します。 |
boolean |
promptsAfterFetchLimit()
フェッチ制限に達した後にユーザを促すかどうかを返します。 |
EOQualifier |
qualifier()
フェッチするレコードやオブジェクトを指定するEOQualifierを返します。 |
NSArray |
rawRowKeyPaths()
属性キーパスの配列を返します。 このキーパスは、データベース行をフェッチし、通常のオブジェクトで構成される結果に代わる辞書オブジェクトの配列を返すために使われます。 |
boolean |
refreshesRefetchedObjects()
既存のオブジェクトに更新・変更があったとき、フェッチした値で上書きするならば true を、 データを再フェッチしても上書きしないならば false を返します。
|
boolean |
requiresAllQualifierBindingVariables()
バインディングが見つからない場合、代替変数を決定する間に発生した例外をそのまま投げるならば true を返します。
|
void |
setEntityName(String entityName)
entityName をフェッチするルートエンティティ名として設定します。
|
void |
setFetchesRawRows(boolean fetchesRawRows)
データベース行をフェッチする際の挙動を設定します。 |
void |
setFetchLimit(int fetchLimit)
フェッチするオブジェクトの最大数の制限を指定します。 |
void |
setHints(NSDictionary hints)
ヒントとなるオブジェクトを hints に設定します。 |
void |
setIsDeep(boolean isDeep)
サブエンティティも含めてフェッチするかどうかを設定します。 |
void |
setLocksObjects(boolean locksObjects)
データリポジトリからフェッチするオブジェクトをロックするかどうかをを設定します。 |
void |
setPrefetchingRelationshipKeyPaths(NSArray keyPaths)
メインのエンティティのフェッチ時に、一緒にフェッチしておくリレーションシップキーパスの配列を設定します。 |
void |
setPromptsAfterFetchLimit(boolean value)
フェッチを続けるかどうかユーザを促すため、フェッチ制限に達した際にアプリケーションのメッセージハンドラに通知するかどうかを設定します。 |
void |
setQualifier(EOQualifier qualifier)
qualifier をフェッチ条件として設定します。 |
void |
setRawRowKeyPaths(NSArray keyPaths)
属性キーパスの配列を設定します。 このキーパスは、データベース行をフェッチし、通常のオブジェクトで構成される結果に代わる辞書オブジェクトの配列を返すために使われます。 |
void |
setRefreshesRefetchedObjects(boolean refreshes)
既存のオブジェクトに更新・変更があったとき、フェッチした値で上書きするかどうかを設定します。 |
void |
setRequiresAllQualifierBindingVariables(boolean requires)
バインディングが見つからず、代替変数を決定する間の挙動を設定します。 |
void |
setSortOrderings(NSArray sortOrderings)
sortOrderings をEOSortOrderingsの配列として設定します。
|
void |
setUsesDistinct(boolean usesDistinct)
フェッチ時に重複したレコードやオブジェクトを取り除くかどうかを設定します。 |
NSArray |
sortOrderings()
EOSortOrderingsの配列を返します。 |
String |
toString()
オブジェクトを文字列にして返します。 |
boolean |
usesDistinct()
フェッチ時に重複したレコードやオブジェクトを取り除くなら true を、取り除かないなら false を返します。
|
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
public EOFetchSpecification()
setEntityName(String)
public EOFetchSpecification(String entityName, EOQualifier qualifier, NSArray sortOrderings, boolean usesDistinct, boolean isDeep, NSDictionary hints)
qualifier
が空の(何もEOQualifierを持たない)EOAndQualifierやEOOrQualifierの場合、 フェッチ条件には null
が設定されることになります。
entityName
- フェッチするエンティティ名
qualifier
- フェッチ条件
sortOrderings
- フェッチ結果のソート順序
usesDistinct
- 重複を取り除くなら true
、そうでなければ false
isDeep
- 深くフェッチするなら true
、そうでなければ false
hints
- フェッチのヒントpublic EOFetchSpecification(String entityName, EOQualifier qualifier, NSArray sortOrderings)
qualifier
が空の(何もEOQualifierを持たない)EOAndQualifierやEOOrQualifierの場合、 フェッチ条件には null
が設定されることになります。
entityName
- フェッチするエンティティ名
qualifier
- フェッチ条件
sortOrderings
- フェッチ結果のソート順序Method Detail |
public Class classForCoder()
classForCoder
in interface NSCoding
encodeWithCoder(NSCoder)
,
decodeObject(NSCoder)
,
NSCoding
public Object clone()
java.lang.Cloneable
インターフェースの実装です。
public static Object decodeObject(NSCoder coder)
coder
が保持する型情報とデータを元に、オブジェクトを(再度)生成します。
coder
- オブジェクトのデータと型情報を保持するコーダー
coder
encodeWithCoder(NSCoder coder)
,
classForCoder()
,
NSCoding
public static Object decodeWithKeyValueUnarchiver(EOKeyValueUnarchiver unarchiver)
unarchiver
の情報を元にオブジェクトを(再度)生成します。
unarchiver
- オブジェクトのデコードに使う key-value アーカイバ
unarchiver
EOKeyValueArchiving
public void encodeWithCoder(NSCoder coder)
coder
に書き込みます。
これによって decodeObject
でオブジェクトを復元することができます。
独自に型情報を使うには classForCoder
をオーバーライドします。
encodeWithCoder
in interface NSCoding
coder
- オブジェクトのデータと型情報を保持するコーダー
decodeObject(NSCoder)
,
classForCoder()
,
NSCoding
public void encodeWithKeyValueArchiver(EOKeyValueArchiver archiver)
archiver
に書き込みます。
これによって decodeWithKeyValueUnarchiver
でオブジェクトを復元することができます。
encodeWithKeyValueArchiver
in interface EOKeyValueArchiving
archiver
- エンコードに使用する key-value アーカイバ
EOKeyValueArchiving
public String entityName()
setEntityName(String)
,
isDeep()
public int fetchLimit()
promptsAfterFetchLimit
の値によっては、制限に達したときにEODatabaseContextがフェッチを中止したり、EOEditingContextのメッセージハンドラがフェッチを続けるかどうか決定します。
0 を設定すると無制限にオブジェクトをフェッチします。
デフォルト値は 0 です。
setFetchLimit(int)
,
promptsAfterFetchLimit()
,
setPromptsAfterFetchLimit(boolean)
public static EOFetchSpecification fetchSpecificationNamed(String name, String entityName)
entityName
に、フェッチ仕様名を name
にしたEOFetchSpecificationオブジェクトを生成して返します。
name
- フェッチ仕様名
entityName
- フェッチするエンティティ名
public EOFetchSpecification fetchSpecificationWithQualifierBindings(NSDictionary bindings)
bindings
が存在すればフェッチ条件に設定し、新しいフェッチ仕様オブジェクトを返します。
デフォルトの挙動では、バインディングが存在しなければノードを切り詰めます。
setRequiresAllQualifierBindingVariables
に true
を設定すると、存在しないバインディングの代替変数を決定する時に、強制的に例外を発生させます。
bindings
- フェッチ条件に設定するバインディング
setRequiresAllQualifierBindingVariables(boolean)
public boolean fetchesRawRows()
rawRowKeyPaths
が null
以外の値を返すかどうかを返します。
rawRowKeyPaths
が null
以外の値を返すなら true
を、そうでなければ false
を返します。
rawRowKeyPaths()
,
setFetchesRawRows(boolean)
public NSDictionary hints()
setHints(NSDictionary)
public boolean isDeep()
サブエンティティも含めてフェッチするならば true
を、そうでなければ false
を返します。
デフォルト値は true
です。
例えば従業員と顧客の2つのサブエンティティを持つ人物エンティティがあるとき、人物オブジェクトを深くフェッチすると、条件にマッチする従業員・顧客オブジェクトもすべてフェッチします。 浅くフェッチすると、条件にマッチする人物オブジェクトのみをフェッチします。
true
を、そうでなければ false
を返します。
setIsDeep(boolean)
public boolean locksObjects()
true
を、そうでなければ false
を返します。
デフォルト値は false
です。
不要なロックはデータベース操作のパフォーマンスを落とす可能性があることに注意してください。
true
を、そうでなければ false
を返します。
setLocksObjects(boolean)
public NSArray prefetchingRelationshipKeyPaths()
setPrefetchingRelationshipKeyPaths(NSArray)
public boolean promptsAfterFetchLimit()
false
です。
true
、フェッチを中断するなら setPromptsAfterFetchLimit(boolean)
,
fetchLimit()
,
setFetchLimit(int)
public EOQualifier qualifier()
setQualifier(EOQualifier)
public NSArray rawRowKeyPaths()
null
であり、フェッチの結果としてオブジェクトを返します。
空の配列の場合は設定されたエンティティに対してフェッチします。
このときフェッチする属性は attributesToFetch
メソッドによって決まります。
主キー属性が(戻り値の)データベース属性に含まれる限り、
データベース行はEOEditingContextの faultForRawRow
メソッドでフォールトを生成するのに使われる可能性があります。
setFetchesRawRows(boolean)
,
setRawRowKeyPaths(NSArray)
,
EOEditingContext.faultForRawRow(NSDictionary, String)
,
EOEditingContext.faultForRawRow(NSDictionary, String, EOEditingContext)
public boolean refreshesRefetchedObjects()
true
を返します。
データを再フェッチしても上書きしないならば false
を返します(フェッチしたデータは破棄されます)。
デフォルト値は false
です。
この設定はリレーションシップ先のオブジェクトまでは影響しないので注意してください。
true
を、上書きしないならば false
を返します。
setRefreshesRefetchedObjects(boolean)
public boolean requiresAllQualifierBindingVariables()
true
を返します。
デフォルト値は false
で、バインディングのないノードを切り詰めます。
true
を、そうでなければ false
public void setEntityName(String entityName)
entityName
をフェッチするルートエンティティ名として設定します。
entityName
- フェッチするルートエンティティ名
isDeep()
,
entityName()
public void setFetchLimit(int fetchLimit)
promptsAfterFetchLimit
の値によっては、制限に達したときにEODatabaseContextがフェッチを中止したり、EOEditingContextのメッセージハンドラがフェッチを続けるかどうか決定します。
0 を設定すると無制限にオブジェクトをフェッチします。
デフォルト値は 0 です。
fetchLimit
- フェッチするオブジェクトの最大数の制限
fetchLimit()
,
promptsAfterFetchLimit()
,
setPromptsAfterFetchLimit(boolean)
public void setFetchesRawRows(boolean fetchesRawRows)
true
を設定すると、 setRawRowKeyPaths
に空の配列を設定するのと同じ挙動になります(fetchesRawRows
が true
を返すようになります)。
false
を設定すると、 setRawRowKeyPaths
に null
を設定するのと同じ挙動になります(fetchesRawRows
が false
を返すようになります)。
rawRowKeyPaths
に何らかの値を設定していると、その値を上書きするので注意してください。
fetchesRawRows
- rawRowKeyPaths
が null
以外の値を返すなら true
、そうでなければ false
rawRowKeyPaths()
,
fetchesRawRows()
public void setHints(NSDictionary hints)
hints
に設定します。
ヒントはフェッチ操作を最適化・変更するためのもので、どんなオブジェクトでも含められます。
例えば、EODatabaseContextは CustomQueryExpressionHintKey
のキーで取得したオブジェクトをヒントとして使います。
EODatabaseContextはEnterprise Objects Frameworkで唯一フェッチ仕様のヒントを定義しているクラスです。
hints
- ヒント
hints()
,
EODatabaseContext
public void setIsDeep(boolean isDeep)
サブエンティティも含めてフェッチするならば true
を、そうでなければ false
を設定します。
デフォルト値は true
です。
例えば従業員と顧客の2つのサブエンティティを持つ人物エンティティがあるとき、人物オブジェクトを深くフェッチすると、条件にマッチする従業員・顧客オブジェクトもすべてフェッチします。 浅くフェッチすると、条件にマッチする人物オブジェクトのみをフェッチします。
isDeep
- サブエンティティも含めてフェッチするならば true
、そうでなければ false
isDeep()
public void setLocksObjects(boolean locksObjects)
true
を設定すればロックし、 false
を設定すればロックしません。
デフォルト値は false
です。
不要なロックはデータベース操作のパフォーマンスを落とす可能性があることに注意してください。
locksObjects
- オブジェクトをロックするなら true
、そうでなければ false
locksObjects()
public void setPrefetchingRelationshipKeyPaths(NSArray keyPaths)
メインのエンティティのフェッチ時に、一緒にフェッチしておくリレーションシップキーパスの配列を設定します。 例えば Movie エンティティなら ("directors","roles.talent", "plotSummary") のパスを指定することができます。
事前フェッチは初期フェッチのコストが増えますが、データベースサーバを往復する回数を減らすことで、全体的なパフォーマンスを上げることができます。 事前フェッチを行うようリレーションシップを指定すると、フェッチ仕様のリフレッシュに影響します。
リフレッシュすると、既存の(フェッチ済みの)オブジェクトをフェッチした値で上書きします。
アプリケーションは他から行われたデータベースの変更を知ることができます。
通常EOFetchSpecificationに setRefreshesRefetchedObjects
でリフレッシュするよう設定すると、次にフェッチしたオブジェクトのみリフレッシュします。
例えば従業員オブジェクトをフェッチしても、リレーションシップ先の部署オブジェクトまではフェッチしません。
しかし、リレーションシップ先を事前フェッチしておくと、指定したリレーションシップ先のオブジェクトがすべてリフレッシュされます。
keyPaths
- 事前フェッチするリレーションシップキーパスの配列
prefetchingRelationshipKeyPaths()
,
setRefreshesRefetchedObjects(boolean)
public void setPromptsAfterFetchLimit(boolean value)
フェッチを続けるかどうかユーザを促すため、フェッチ制限に達した際にアプリケーションのメッセージハンドラに通知するかどうかを設定します。
value
が false
か、アプリケーションがメッセージハンドラを持たない場合、フェッチしたデータベース行の数が fetchLimit
に達するとフェッチを中断します。
デフォルト値は false
です。
メッセージハンドラはEOInterfaceのみ実装していることに注意してください。
標準のWebObjectsアプリケーションでこの機能を使うには、メッセージハンドラを直接設定し、
適切な方法でユーザを促すよう editingContextShouldContinueFetching
を実装しなければなりません。
value
- フェッチ制限に達した後にユーザを促すなら true
、フェッチを中断するなら fetchLimit()
,
setFetchLimit(int)
,
promptsAfterFetchLimit()
,
EOEditingContext.MessageHandler.editingContextShouldContinueFetching(EOEditingContext context, int count, int originalLimit, EOObjectStore objectStore)
public void setQualifier(EOQualifier qualifier)
qualifier
をフェッチ条件として設定します。
qualifier
が空の場合(EOAndQualifierやEOOrQualifierのフェッチ条件が空の場合など)、フェッチ条件には null
が設定されます。
qualifier
- フェッチ条件
qualifier()
public void setRawRowKeyPaths(NSArray keyPaths)
null
であり、フェッチの結果としてオブジェクトを返します。
空の配列の場合は設定されたエンティティに対してフェッチします。
このときフェッチする属性は attributesToFetch
メソッドによって決まります。
主キー属性が(戻り値の)データベース属性に含まれる限り、
データベース行はEOEditingContextの faultForRawRow
メソッドでフォールトを生成するのに使われる可能性があります。
keyPaths
- データベース行をフェッチするための属性キーパスの配列
rawRowKeyPaths()
,
setFetchesRawRows(boolean)
,
EOEditingContext.faultForRawRow(NSDictionary, String)
,
EOEditingContext.faultForRawRow(NSDictionary, String, EOEditingContext)
public void setRefreshesRefetchedObjects(boolean refreshes)
既存のオブジェクトに更新・変更があったとき、フェッチした値で上書きするかどうかを設定します。
refreshes
が true
なら上書きしますが、 refreshes
が false
であれば上書きしません(フェッチしたデータは破棄されます)。
デフォルト値は false
です。
例えば、従業員オブジェクトをフェッチ・再フェッチし、フェッチするまで何も変更しなかったと仮定します。 このような場合、最初にフェッチしてから再度フェッチするまでの間に、他のアプリケーションからオブジェクトが更新された可能性があり、従業員オブジェクトをリフレッシュしたいでしょう。 このオブジェクトを外部リポジトリのデータと同期しておくには、オブジェクトの古い値を新しい値と置き換える必要があります。 それとは反対に、オブジェクトをフェッチし、変更し、再フェッチしたときなど、オブジェクトをリフレッシュしないでほしいこともあるでしょう。 他のアプリケーションが従業員オブジェクトを変更したかどうかに関わらず、リフレッシュするとオブジェクトに加えた変更を失うことになります。
EODatabaseContextのデリゲートメソッド databaseContextShouldUpdateCurrentSnapshot
を使うと、リフレッシュに関してEOFetchSpecificationよりもきめ細かく操作できます。
refreshes
- 既存のオブジェクトをフェッチした値で上書きするなら true
を、そうでなければ false
refreshesRefetchedObjects()
,
EODatabaseContext
,
EODatabaseContext.Delegate
public void setRequiresAllQualifierBindingVariables(boolean requires)
requires
が true
のときにバインディングが見つからない場合、代替変数を決定する間に発生した例外をそのまま投げます。
デフォルト値は false
で、バインディングのないノードを切り詰めます。
requires
- バインディングが見つからない場合に例外を発生させるならば true
を、そうでなければ false
public void setSortOrderings(NSArray sortOrderings)
sortOrderings
をEOSortOrderingsの配列として設定します。
フェッチ時、フェッチ結果は配列中の各EOSortOrderingによってソートされます(EOSortOrderingは配列の先頭のものから順に使われます)。
sortOrderings
- EOSortOrderingsの配列
sortOrderings()
public void setUsesDistinct(boolean usesDistinct)
true
を、取り除かないなら false
を返します。
デフォルトでは重複を取り除きません(重複したまま返します)。
usesDistinct
- 重複したレコードやオブジェクトを取り除くなら true
、そうでなければ false
usesDistinct()
public NSArray sortOrderings()
setSortOrderings(NSArray)
public String toString()
public boolean usesDistinct()
true
を、取り除かないなら false
を返します。
デフォルトでは重複を取り除きません(重複したまま返します)。
true
を、そうでなければ false
を返します。
setUsesDistinct(boolean)
|
Last updated Thu Oct 21 15:04:16 PDT 2004. | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |