Craig L Russell created JDO-762:
-----------------------------------
Summary: setParameters and setNamedParameters should use thread
local storage
Key: JDO-762
URL: https://issues.apache.org/jira/browse/JDO-762
Project: JDO
Issue Type: Improvement
Components: api
Affects Versions: JDO 3.1
Reporter: Craig L Russell
Priority: Minor
Fix For: JDO 3.2
These methods are the only ones that can be used with the new execute methods
to set parameters.
Sadly, they are not thread-safe, which is a problem considering that the Query
object is supposed to be thread-safe.
Before we added new Query methods, the execute method provided the parameters.
But now, the only way to provide parameters with the new execute methods is via
the setParameters and setNamedParameters. This is especially important for
named queries where the nominal usage pattern is for the implementation to
store the (compiled) Query objects in a Map<String, Query>.
I'd like to update the description to include the expected thread behavior:
* Parameter values are stored in thread local storage so the same Query object
* can be used by multiple threads simultaneously.
/**
* Method to set the named parameters on this query prior to execution.
* If using the execute methods taking parameters then those parameter
values will override these values.
* All parameter values specified in this method will only be retained until
the subsequent query execution.
* @param namedParamMap The map of parameter values keyed by their names.
* @return This query
*/
Query<T> setNamedParameters(Map<String, ?> namedParamMap);
/**
* Method to set the values of the numbered parameters on this query prior
to execution.
* If using the execute methods taking parameters then those parameter
values will override these values.
* All parameter values specified in this method will only be retained until
the subsequent query execution.
* @param paramValues Values of the numbered parameters, in order.
* @return This query
*/
Query<T> setParameters(Object... paramValues);
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)