Oracle Application Server TopLink API Reference
10g Release 2 (10.1.2)

B15903-01


oracle.toplink.publicinterface
Class DescriptorQueryManager

java.lang.Object
  extended byoracle.toplink.publicinterface.DescriptorQueryManager

All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable

public class DescriptorQueryManager
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable

Purpose: The query manager allows for the database opperations that TopLink performs to be customized by the application. For each descriptor a query can be given that controls how a operation will occur. A common example is if the application requires a stored procedure to be used to insert the object, it can override the SQL call in the insert query that TopLink will use to insert the object. Queries can be customized to extend TopLink behavior, access non-relational data or use stored procedures or customized SQL calls.

The queries that can be customized include:

See Also:
Descriptor, Serialized Form

Method Summary
void addQuery(DatabaseQuery query)
PUBLIC: Add the query to the session queries
void addQuery(java.lang.String name, DatabaseQuery query)
PUBLIC: Add the query to the descriptor queries with the given name
void assumeExistenceForDoesExist()
PUBLIC: Assume that if the objects primary key does not include null then it must exist.
void assumeNonExistenceForDoesExist()
PUBLIC: Assume that the object does not exist.
void checkCacheForDoesExist()
PUBLIC: Default behavior.
void checkDatabaseForDoesExist()
PUBLIC: Perform does exist check on the database
boolean containsQuery(java.lang.String queryName)
PUBLIC: Return true if the query is defined on the session
Expression getAdditionalJoinExpression()
PUBLIC: Returns the join expression that should be appended to all of the descriptors expressions Contains any multiple table or inheritance dependencies
java.util.Vector getAllQueries()
PUBLIC: Return the pre-defined queries for the descriptor.
DeleteObjectQuery getDeleteQuery()
PUBLIC: Return the receiver's delete query.
java.lang.String getDeleteSQLString()
PUBLIC: Return the receiver's delete SQL string.
DoesExistQuery getDoesExistQuery()
PUBLIC: Return the receiver's does exist query.
java.lang.String getDoesExistSQLString()
PUBLIC: Return the receiver's does exist SQL string.
InsertObjectQuery getInsertQuery()
PUBLIC: Return the receiver's insert query.
java.lang.String getInsertSQLString()
PUBLIC: Return the receiver's insert SQL string.
Expression getMultipleTableJoinExpression()
PUBLIC: This is normally generated for descriptors that have multiple tables.
java.util.Hashtable getQueries()
PUBLIC: Return the pre-defined queries for the descriptor.
DatabaseQuery getQuery(java.lang.String queryName)
PUBLIC: Return the query name from the set of pre-defined queries If only one query exists with this name, it will be returned.
DatabaseQuery getQuery(java.lang.String name, java.util.Vector arguments)
PUBLIC: Return the query from the set of pre-defined queries with the given name and argument types.
ReadAllQuery getReadAllQuery()
PUBLIC: Return the receiver's read query.
java.lang.String getReadAllSQLString()
PUBLIC: Return the receiver's read SQL string.
ReadObjectQuery getReadObjectQuery()
PUBLIC: Return the receiver's read query.
java.lang.String getReadObjectSQLString()
PUBLIC: Return the receiver's read SQL string.
UpdateObjectQuery getUpdateQuery()
PUBLIC: Return the receiver's update query.
java.lang.String getUpdateSQLString()
PUBLIC: Return the receiver's update SQL string.
void removeQuery(java.lang.String queryName)
PUBLIC: Remove all queries with the given query name from the set of pre-defined queries
void removeQuery(java.lang.String queryName, java.util.Vector argumentTypes)
PUBLIC: Remove the specific query with the given queryName and argumentTypes.
void setAdditionalJoinExpression(Expression additionalJoinExpression)
PUBLIC: Set the additional join expression.
void setDeleteQuery(DeleteObjectQuery query)
PUBLIC: Set the receiver's delete query.
void setDeleteSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's delete SQL string.
void setDoesExistQuery(DoesExistQuery query)
PUBLIC: Set the receiver's does exist query.
void setDoesExistSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's does exist SQL string.
void setInsertQuery(InsertObjectQuery insertQuery)
PUBLIC: Set the receiver's insert query.
void setInsertSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's insert SQL string.
void setMultipleTableJoinExpression(Expression multipleTableJoinExpression)
PUBLIC: This is normally generated for descriptors that have multiple tables.
void setQueries(java.util.Hashtable hashtable)
PUBLIC: set the pre-defined queries for the descriptor.
void setReadAllQuery(ReadAllQuery query)
PUBLIC: Set the receiver's read all query.
void setReadAllSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's read SQL string.
void setReadObjectQuery(ReadObjectQuery query)
PUBLIC: Set the receiver's read query.
void setReadObjectSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's read SQL string.
void setUpdateQuery(UpdateObjectQuery updateQuery)
PUBLIC: Set the receiver's update query.
void setUpdateSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's update SQL string.

Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

addQuery

public void addQuery(java.lang.String name,
                     DatabaseQuery query)
PUBLIC: Add the query to the descriptor queries with the given name
Parameters:
name - This is the name of the query. It will be set on the query and used to look it up.
query - This is the query that will be added. If the query being added has parameters, the existing list of queries will be checked for matching queries. If a matching query exists, it will be replaced.

addQuery

public void addQuery(DatabaseQuery query)
PUBLIC: Add the query to the session queries
Parameters:
query - DatabaseQuery This is the query that will be added. If the query being added has parameters, the existing list of queries will be checked for matching queries. If a matching query exists, it will be replaced.

assumeExistenceForDoesExist

public void assumeExistenceForDoesExist()
PUBLIC: Assume that if the objects primary key does not include null then it must exist. This may be used if the application guarantees or does not care about the existence check.

assumeNonExistenceForDoesExist

public void assumeNonExistenceForDoesExist()
PUBLIC: Assume that the object does not exist. This may be used if the application guarantees or does not care about the existence check. This will always force an insert to be called.

checkCacheForDoesExist

public void checkCacheForDoesExist()
PUBLIC: Default behavior. Assume that if the objects primary key does not include null and it is in the cache, then is must exist.

checkDatabaseForDoesExist

public void checkDatabaseForDoesExist()
PUBLIC: Perform does exist check on the database

containsQuery

public boolean containsQuery(java.lang.String queryName)
PUBLIC: Return true if the query is defined on the session

getAdditionalJoinExpression

public Expression getAdditionalJoinExpression()
PUBLIC: Returns the join expression that should be appended to all of the descriptors expressions Contains any multiple table or inheritance dependencies

getDeleteQuery

public DeleteObjectQuery getDeleteQuery()
PUBLIC: Return the receiver's delete query. This should be an instance of a valid subclass of DeleteObjectQuery. If specified this is used by the descriptor to delete itself and its private parts from the database. This gives the user the ability to define exactly how to delete the data from the database, or access data external from the database or from some other framework.

getDeleteSQLString

public java.lang.String getDeleteSQLString()
PUBLIC: Return the receiver's delete SQL string. This allows the user to override the SQL generated by TopLink, with their own SQL or procedure call. The arguments are translated from the fields of the source row, through replacing the field names marked by '#' with the values for those fields.

Example, "delete from EMPLOYEE where EMPLOYEE_ID = #EMPLOYEE_ID".


getDoesExistQuery

public DoesExistQuery getDoesExistQuery()
PUBLIC: Return the receiver's does exist query. This should be an instance of a valid subclass of DoesExistQuery. If specified this is used by the descriptor to query existence of an object in the database. This gives the user the ability to define exactly how to query existence from the database, or access data external from the database or from some other framework.

getDoesExistSQLString

public java.lang.String getDoesExistSQLString()
PUBLIC: Return the receiver's does exist SQL string. This allows the user to override the SQL generated by TopLink, with there own SQL or procedure call. The arguments are translated from the fields of the source row, through replacing the field names marked by '#' with the values for those fields. This must return null if the object does not exist, otherwise return a database row.

Example, "select EMPLOYEE_ID from EMPLOYEE where EMPLOYEE_ID = #EMPLOYEE_ID".


getInsertQuery

public InsertObjectQuery getInsertQuery()
PUBLIC: Return the receiver's insert query. This should be an instance of a valid subclass of InsertObjectQuery. If specified this is used by the descriptor to insert itself into the database. If the receiver uses sequence numbers, this query must return the updated sequence value. This gives the user the ability to define exactly how to insert the data into the database, or access data externel from the database or from some other framework.

getInsertSQLString

public java.lang.String getInsertSQLString()
PUBLIC: Return the receiver's insert SQL string. This allows the user to override the SQL generated by TopLink, with their own SQL or procedure call. The arguments are translated from the fields of the source row, through replacing the field names marked by '#' with the values for those fields.

Example, "insert into EMPLOYEE (F_NAME, L_NAME) values (#F_NAME, #L_NAME)".


getMultipleTableJoinExpression

public Expression getMultipleTableJoinExpression()
PUBLIC: This is normally generated for descriptors that have multiple tables. However, if the additional table does not reference the primary tables primary key, this expression may be set directly.

getQueries

public java.util.Hashtable getQueries()
PUBLIC: Return the pre-defined queries for the descriptor. The Hashtable returned contains Vectors of queries.
See Also:
getAllQueries()

getAllQueries

public java.util.Vector getAllQueries()
PUBLIC: Return the pre-defined queries for the descriptor. The Vector returned contains all queries for this descriptor.
See Also:
getQueries()

setQueries

public void setQueries(java.util.Hashtable hashtable)
PUBLIC: set the pre-defined queries for the descriptor. Used to write out deployment XML

getQuery

public DatabaseQuery getQuery(java.lang.String queryName)
PUBLIC: Return the query name from the set of pre-defined queries If only one query exists with this name, it will be returned. If there are multiple queries of this name, this method will search for a query with no arguments and return the first one it finds.
See Also:
getQuery(String, Vector)

getQuery

public DatabaseQuery getQuery(java.lang.String name,
                              java.util.Vector arguments)
PUBLIC: Return the query from the set of pre-defined queries with the given name and argument types. This allows for common queries to be pre-defined, reused and executed by name. This method should be used if the Session has multiple queries with the same name but different arguments. If only one query exists, it will be returned regardless of the arguments. If multiple queries exist, the first query that has corresponding argument types will be returned
See Also:
getQuery(String)

getReadAllQuery

public ReadAllQuery getReadAllQuery()
PUBLIC: Return the receiver's read query. This should be an instance of a valid subclass of ReadAllQuery.

getReadAllSQLString

public java.lang.String getReadAllSQLString()
PUBLIC: Return the receiver's read SQL string. This allows the user to override the SQL generated by TopLink, with their own SQL or procedure call. The arguments are translated from the fields of the read arguments row, through replacing the field names marked by '#' with the values for those fields. Note that this is only used on readAllObjects(Class), and not when an expression is provided.

Example, "select * from EMPLOYEE"


getReadObjectQuery

public ReadObjectQuery getReadObjectQuery()
PUBLIC: Return the receiver's read query. This should be an instance of a valid subclass of ReadObjectQuery. If specified this is used by the descriptor to read itself from the database. The read arguments must be the primary key of the object only. This gives the user the ability to define exactly how to read the object from the database, or access data externel from the database or from some other framework.

getReadObjectSQLString

public java.lang.String getReadObjectSQLString()
PUBLIC: Return the receiver's read SQL string. This allows the user to override the SQL generated by TopLink, with their own SQL or procedure call. The arguments are translated from the fields of the read arguments row, through replacing the field names marked by '#' with the values for those fields. This must accept only the primary key of the object as arguments.

Example, "select * from EMPLOYEE where EMPLOYEE_ID = #EMPLOYEE_ID"


getUpdateQuery

public UpdateObjectQuery getUpdateQuery()
PUBLIC: Return the receiver's update query. This should be an instance of a valid subclass of UpdateObjectQuery. If specified this is used by the descriptor to insert itself into the database. If the receiver uses optimisitic locking this must raise an error on optimisitic lock failure. This gives the user the ability to define exactly how to update the data into the database, or access data externel from the database or from some other framework.

getUpdateSQLString

public java.lang.String getUpdateSQLString()
PUBLIC: Return the receiver's update SQL string. This allows the user to override the SQL generated by TopLink, with there own SQL or procedure call. The arguments are translated from the fields of the source row, through replacing the field names marked by '#' with the values for those fields. This must check the optimistic lock field and raise an error on optimistic lock failure.

Example, "update EMPLOYEE set F_NAME to #F_NAME, L_NAME to #L_NAME where EMPLOYEE_ID = #EMPLOYEE_ID".


removeQuery

public void removeQuery(java.lang.String queryName)
PUBLIC: Remove all queries with the given query name from the set of pre-defined queries
See Also:
removeQuery(String, Vector)

removeQuery

public void removeQuery(java.lang.String queryName,
                        java.util.Vector argumentTypes)
PUBLIC: Remove the specific query with the given queryName and argumentTypes.
See Also:
removeQuery(String)

setAdditionalJoinExpression

public void setAdditionalJoinExpression(Expression additionalJoinExpression)
PUBLIC: Set the additional join expression. Used in conjuction with multiple tables and inheritance relationships. This can also be used if a sub-expression is always required to be appended to all queries. Such as tables that are shared based on a type field without inheritance.

setDeleteQuery

public void setDeleteQuery(DeleteObjectQuery query)
PUBLIC: Set the receiver's delete query. This should be an instance of a valid subclas of DeleteObjectQuery. If specified this is used by the descriptor to delete itself and its private parts from the database. This gives the user the ability to define exactly how to delete the data from the database, or access data external from the database or from some other framework.

setDeleteSQLString

public void setDeleteSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's delete SQL string. This allows the user to override the SQL generated by TopLink, with their own SQL or procedure call. The arguments are translated from the fields of the source row, through replacing the field names marked by '#' with the values for those fields.

Example, "delete from EMPLOYEE where EMPLOYEE_ID = #EMPLOYEE_ID".


setDoesExistQuery

public void setDoesExistQuery(DoesExistQuery query)
PUBLIC: Set the receiver's does exist query. This should be an instance of a valid subclas of DoesExistQuery. If specified this is used by the descriptor to query existence of an object in the database. This gives the user the ability to define exactly how to query existence from the database, or access data external from the database or from some other framework.

setDoesExistSQLString

public void setDoesExistSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's does exist SQL string. This allows the user to override the SQL generated by TopLink, with there own SQL or procedure call. The arguments are translated from the fields of the source row, through replacing the field names marked by '#' with the values for those fields. This must return null if the object does not exist, otherwise return a database row.

Example, "select EMPLOYEE_ID from EMPLOYEE where EMPLOYEE_ID = #EMPLOYEE_ID".


setInsertQuery

public void setInsertQuery(InsertObjectQuery insertQuery)
PUBLIC: Set the receiver's insert query. This should be an instance of a valid subclass of InsertObjectQuery. If specified this is used by the descriptor to insert itself into the database. This gives the user the ability to define exactly how to insert the data into the database, or access data external from the database or from some other framework.

setInsertSQLString

public void setInsertSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's insert SQL string. This allows the user to override the SQL generated by TopLink, with their own SQL or procedure call. The arguments are translated from the fields of the source row, through replacing the field names marked by '#' with the values for those fields.

Example, "insert into EMPLOYEE (F_NAME, L_NAME) values (#F_NAME, #L_NAME)".


setMultipleTableJoinExpression

public void setMultipleTableJoinExpression(Expression multipleTableJoinExpression)
PUBLIC: This is normally generated for descriptors that have multiple tables. However, if the additional table does not reference the primary table's primary key, this expression may be set directly.

setReadAllQuery

public void setReadAllQuery(ReadAllQuery query)
PUBLIC: Set the receiver's read all query. This should be an instance of a valid subclass of ReadAllQuery. If specified this is used by the descriptor to read all instances of its class from the database. This gives the user the ability to define exactly how to read all objects from the database, or access data external from the database or from some other framework. Note that this is only used on readAllObjects(Class), and not when an expression is provided.

setReadAllSQLString

public void setReadAllSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's read SQL string. This allows the user to override the SQL generated by TopLink, with their own SQL or procedure call. The arguments are translated from the fields of the read arguments row, through replacing the field names marked by '#' with the values for those fields. Note that this is only used on readAllObjects(Class), and not when an expression is provided.

Example, "select * from EMPLOYEE"


setReadObjectQuery

public void setReadObjectQuery(ReadObjectQuery query)
PUBLIC: Set the receiver's read query. This should be an instance of a valid subclass of ReadObjectQuery> If specified this is used by the descriptor to read itself from the database. The read arguments must be the primary key of the object only. This gives the user the ability to define exactly how to read the object from the database, or access data external from the database or from some other framework.

setReadObjectSQLString

public void setReadObjectSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's read SQL string. This allows the user to override the SQL generated by TopLink, with their own SQL or procedure call. The arguments are translated from the fields of the read arguments row, through replacing the field names marked by '#' with the values for those fields. This must accept only the primary key of the object as arguments.

Example, "select * from EMPLOYEE where EMPLOYEE_ID = #EMPLOYEE_ID"


setUpdateQuery

public void setUpdateQuery(UpdateObjectQuery updateQuery)
PUBLIC: Set the receiver's update query. This should be an instance of a valid subclass of UpdateObjectQuery. If specified this is used by the descriptor to update itself in the database. If the receiver uses optimisitic locking this must raise an error on optimisitic lock failure. This gives the user the ability to define exactly how to update the data into the database, or access data external from the database or from some other framework.

setUpdateSQLString

public void setUpdateSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's update SQL string. This allows the user to override the SQL generated by TopLink, with there own SQL or procedure call. The arguments are translated from the fields of the source row, through replacing the field names marked by '#' with the values for those fields. This must check the optimistic lock field and raise an error on optimistic lock failure.

Example, "update EMPLOYEE set F_NAME to #F_NAME, L_NAME to #L_NAME where EMPLOYEE_ID = #EMPLOYEE_ID".


Copyright © 1998, 2005 Oracle Corporation. All Rights Reserved.