|
WebObjects 5.2.3 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectcom.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 NSCodingencodeWithCoder(NSCoder),
decodeObject(NSCoder),
NSCodingpublic Object clone()
java.lang.Cloneable インターフェースの実装です。
public static Object decodeObject(NSCoder coder)
coder が保持する型情報とデータを元に、オブジェクトを(再度)生成します。
coder - オブジェクトのデータと型情報を保持するコーダー
coder
encodeWithCoder(NSCoder coder),
classForCoder(),
NSCodingpublic static Object decodeWithKeyValueUnarchiver(EOKeyValueUnarchiver unarchiver)
unarchiver の情報を元にオブジェクトを(再度)生成します。
unarchiver - オブジェクトのデコードに使う key-value アーカイバ
unarchiver
EOKeyValueArchivingpublic void encodeWithCoder(NSCoder coder)
coder に書き込みます。
これによって decodeObject でオブジェクトを復元することができます。
独自に型情報を使うには classForCoder をオーバーライドします。
encodeWithCoder in interface NSCodingcoder - オブジェクトのデータと型情報を保持するコーダー
decodeObject(NSCoder),
classForCoder(),
NSCodingpublic void encodeWithKeyValueArchiver(EOKeyValueArchiver archiver)
archiver に書き込みます。
これによって decodeWithKeyValueUnarchiver でオブジェクトを復元することができます。
encodeWithKeyValueArchiver in interface EOKeyValueArchivingarchiver - エンコードに使用する key-value アーカイバ
EOKeyValueArchivingpublic 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(),
EODatabaseContextpublic 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.Delegatepublic 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 | ||||||||||