com.gigaspaces.datasource
Interface SQLDataProvider<T>
- All Superinterfaces:
- ManagedDataSource<T>
- All Known Subinterfaces:
- ExternalDataSource<T>
- All Known Implementing Classes:
- HibernateDataSource
public interface SQLDataProvider<T>
- extends ManagedDataSource<T>
SQLDataProvider
should be implemented when complex queries are used
by the client.
The space uses SQLDataProvider
when the query can not be expressed as one template.
Usually in the following scenarios:
- SQLQuery
.
- extended matching.
- range values.
SQLDataProvider
is an interface that
handles SQLQuery
objects, generated by space.
This interface
This interface can be implemented in addition or instead of the DataProvider
.
In case that both interface are implemented -
the space will choose the most efficient.
- Since:
- 6.0
iterator
DataIterator<T> iterator(SQLQuery<T> query)
throws DataSourceException
Create an iterator over all objects that match the given SQLQuery
.
SQLQuery contains a string representation of SQL 'where' clause.
The format matches the PreparedStatement
format(field1 = ? and field2 > ? and ....).
The prepared values are accessible by SQLQuery
.getPreparedValues() method
Example implementation with SQL PreparedStatement:
PreparedStatement st = con.prepareStatement(query.getSelectAllQuery());
int index = 0;
if(query.hasPreparedValues())
{
for(Iterator iter = query.getPreparedValues().iterator();iter.hasNext())
{
st.setObject(++index,iter.next());
}
}
ResultSet rs = st.executeQuery();
return new ResultSetIterator(rs);
- Returns:
- a
DataIterator
or null if no data was found that match the given template
- Throws:
DataSourceException
- See Also:
ResultSetIterator
count
int count(SQLQuery<T> query)
throws DataSourceException
- Count number of objects in the data source
that match given query
- Parameters:
template
-
- Returns:
-
- Throws:
DataSourceException