Query
interface allows applications to obtain persistent instances, values, and aggregate data from the data store. The {@link PersistenceManager} is the factory for Query
instances. There may be many Query
instances associated with a PersistenceManager
. Multiple queries might be executed simultaneously by different threads, but the implementation might choose to execute them serially. In either case, the implementation must be thread safe. There are three required elements in a Query
: the class of the results, the candidate collection of instances, and the filter.
There are optional elements: parameter declarations, variable declarations, import statements, ordering and grouping specifications, result and result class, the range of results, and flags indicating whether the query result is unique and whether the query can be modified.
The query namespace is modeled after methods in Java:
setClass
corresponds to the class definition declareParameters
corresponds to formal parameters of a method declareVariables
corresponds to local variables of a method setFilter
and setOrdering
correspond to the method body There are two namespaces in queries. Type names have their own namespace that is separate from the namespace for fields, variables and parameters.
The method setClass
introduces the name of the candidate class in the type namespace. The method declareImports
introduces the names of the imported class or interface types in the type namespace. Imported type names must be unique. When used (e.g. in a parameter declaration, cast expression, etc.) a type name must be the name of the candidate class, the name of a class or interface imported by method declareImports
, or denote a class or interface from the same package as the candidate class.
The method setClass
introduces the names of the candidate class fields.
The method declareParameters
introduces the names of the parameters. A name introduced by declareParameters
hides the name of a candidate class field of the same name. Parameter names must be unique.
The method declareVariables
introduces the names of the variables. A name introduced by declareVariables
hides the name of a candidate class field if equal. Variable names must be unique and must not conflict with parameter names.
The result of the query by default is a list of result class instances, but might be specified via setResult
. The class of the result by default is the candidate class, but might be specified via setResultClass
.
A hidden field may be accessed using the 'this' qualifier: this.fieldName
.
The Query
interface provides methods which execute the query based on the parameters given. They return a single instance or a List
of result class instances which the user can iterate to get results. The signature of the execute
methods specifies that they return an Object
which must be cast to the appropriate result by the user.
Any parameters passed to the execute
methods are used only for this execution, and are not remembered for future execution.
@version 2.1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|