public class AsyncCassandraTemplate extends Object implements AsyncCassandraOperations
AsyncCassandraOperations
. It simplifies the use of asynchronous Cassandra usage and
helps to avoid common errors. It executes core Cassandra workflow. This class executes CQL queries or updates,
initiating iteration over ResultSet
and catching Cassandra exceptions and translating them to the generic,
more informative exception hierarchy defined in the org.springframework.dao
package.
Can be used within a service implementation via direct instantiation with a Session
reference, or get
prepared in an application context and given to services as bean reference.
Note: The Session
should always be configured as a bean in the application context, in the first case given
to the service directly, in the second case to the prepared template.
AsyncCassandraOperations
Constructor and Description |
---|
AsyncCassandraTemplate(AsyncCqlTemplate asyncCqlTemplate,
CassandraConverter converter)
Creates an instance of
AsyncCassandraTemplate initialized with the given AsyncCqlTemplate and
CassandraConverter . |
AsyncCassandraTemplate(com.datastax.driver.core.Session session)
Creates an instance of
AsyncCassandraTemplate initialized with the given Session and a default
MappingCassandraConverter . |
AsyncCassandraTemplate(com.datastax.driver.core.Session session,
CassandraConverter converter)
Creates an instance of
AsyncCassandraTemplate initialized with the given Session and
CassandraConverter . |
AsyncCassandraTemplate(SessionFactory sessionFactory,
CassandraConverter converter)
Creates an instance of
AsyncCassandraTemplate initialized with the given SessionFactory and
CassandraConverter . |
Modifier and Type | Method and Description |
---|---|
ListenableFuture<Long> |
count(Class<?> entityClass)
Returns the number of rows for the given entity class.
|
ListenableFuture<WriteResult> |
delete(Object entity,
QueryOptions options)
Delete the given entity applying
QueryOptions and return the entity if the delete was applied. |
ListenableFuture<Boolean> |
delete(Query query,
Class<?> entityClass)
Remove entities (rows)/columns from the table by
Query . |
<T> ListenableFuture<T> |
delete(T entity)
Delete the given entity and return the entity if the delete was applied.
|
ListenableFuture<Boolean> |
deleteById(Object id,
Class<?> entityClass)
Remove the given object from the table by id.
|
ListenableFuture<Boolean> |
exists(Object id,
Class<?> entityClass)
Determine whether the row
entityClass with the given id exists. |
AsyncCqlOperations |
getAsyncCqlOperations()
Expose the underlying
AsyncCqlOperations to allow asynchronous CQL operations. |
CassandraConverter |
getConverter()
Returns the underlying
CassandraConverter . |
protected MappingContext<? extends CassandraPersistentEntity<?>,CassandraPersistentProperty> |
getMappingContext()
Returns the
CassandraMappingContext used by this template to access mapping meta-data used to store (map)
objects to Cassandra tables. |
protected StatementFactory |
getStatementFactory()
Returns the
StatementFactory used by this template to construct and run Cassandra CQL statements. |
ListenableFuture<WriteResult> |
insert(Object entity,
InsertOptions options)
Insert the given entity applying
WriteOptions and return the entity if the insert was applied. |
<T> ListenableFuture<T> |
insert(T entity)
Insert the given entity and return the entity if the insert was applied.
|
<T> ListenableFuture<List<T>> |
select(Query query,
Class<T> entityClass)
Execute a
SELECT query and convert the resulting items to a List of entities. |
<T> ListenableFuture<Void> |
select(Query query,
Consumer<T> entityConsumer,
Class<T> entityClass)
Execute a
SELECT query and convert the resulting items notifying Consumer for each entity. |
<T> ListenableFuture<List<T>> |
select(com.datastax.driver.core.Statement statement,
Class<T> entityClass)
Execute a
SELECT query and convert the resulting items to a List of entities. |
<T> ListenableFuture<Void> |
select(com.datastax.driver.core.Statement statement,
Consumer<T> entityConsumer,
Class<T> entityClass)
Execute a
SELECT query and convert the resulting items notifying Consumer for each entity. |
<T> ListenableFuture<List<T>> |
select(String cql,
Class<T> entityClass)
Execute a
SELECT query and convert the resulting items to a List of entities. |
<T> ListenableFuture<Void> |
select(String cql,
Consumer<T> entityConsumer,
Class<T> entityClass)
Execute a
SELECT query and convert the resulting items notifying Consumer for each entity. |
<T> ListenableFuture<T> |
selectOne(Query query,
Class<T> entityClass)
Execute a
SELECT query and convert the resulting item to an entity. |
<T> ListenableFuture<T> |
selectOne(com.datastax.driver.core.Statement statement,
Class<T> entityClass)
Execute a
SELECT query and convert the resulting item to an entity. |
<T> ListenableFuture<T> |
selectOne(String cql,
Class<T> entityClass)
Execute a
SELECT query and convert the resulting item to an entity. |
<T> ListenableFuture<T> |
selectOneById(Object id,
Class<T> entityClass)
Execute the Select by
id for the given entityClass . |
<T> ListenableFuture<Slice<T>> |
slice(Query query,
Class<T> entityClass)
Execute a
SELECT query with paging and convert the result set to a Slice of entities. |
<T> ListenableFuture<Slice<T>> |
slice(com.datastax.driver.core.Statement statement,
Class<T> entityClass)
Execute a
SELECT query with paging and convert the result set to a Slice of entities. |
ListenableFuture<Void> |
truncate(Class<?> entityClass)
Execute a
TRUNCATE query to remove all entities of a given class. |
ListenableFuture<WriteResult> |
update(Object entity,
UpdateOptions options)
Update the given entity applying
WriteOptions and return the entity if the update was applied. |
ListenableFuture<Boolean> |
update(Query query,
Update update,
Class<?> entityClass)
Update the queried entities and return true if the update was applied.
|
<T> ListenableFuture<T> |
update(T entity)
Update the given entity and return the entity if the update was applied.
|
public AsyncCassandraTemplate(com.datastax.driver.core.Session session)
AsyncCassandraTemplate
initialized with the given Session
and a default
MappingCassandraConverter
.session
- Session
used to interact with Cassandra; must not be null.CassandraConverter
,
Session
public AsyncCassandraTemplate(com.datastax.driver.core.Session session, CassandraConverter converter)
AsyncCassandraTemplate
initialized with the given Session
and
CassandraConverter
.session
- Session
used to interact with Cassandra; must not be null.converter
- CassandraConverter
used to convert between Java and Cassandra types; must not be
null.CassandraConverter
,
Session
public AsyncCassandraTemplate(SessionFactory sessionFactory, CassandraConverter converter)
AsyncCassandraTemplate
initialized with the given SessionFactory
and
CassandraConverter
.sessionFactory
- SessionFactory
used to interact with Cassandra; must not be null.converter
- CassandraConverter
used to convert between Java and Cassandra types; must not be
null.CassandraConverter
,
Session
public AsyncCassandraTemplate(AsyncCqlTemplate asyncCqlTemplate, CassandraConverter converter)
AsyncCassandraTemplate
initialized with the given AsyncCqlTemplate
and
CassandraConverter
.asyncCqlTemplate
- AsyncCqlTemplate
used to interact with Cassandra; must not be null.converter
- CassandraConverter
used to convert between Java and Cassandra types; must not be
null.CassandraConverter
,
Session
public AsyncCqlOperations getAsyncCqlOperations()
AsyncCassandraOperations
AsyncCqlOperations
to allow asynchronous CQL operations.getAsyncCqlOperations
in interface AsyncCassandraOperations
AsyncCqlOperations
.AsyncCqlOperations
public CassandraConverter getConverter()
AsyncCassandraOperations
CassandraConverter
.getConverter
in interface AsyncCassandraOperations
CassandraConverter
.protected MappingContext<? extends CassandraPersistentEntity<?>,CassandraPersistentProperty> getMappingContext()
CassandraMappingContext
used by this template to access mapping meta-data used to store (map)
objects to Cassandra tables.CassandraMappingContext
used by this template.CassandraMappingContext
protected StatementFactory getStatementFactory()
StatementFactory
used by this template to construct and run Cassandra CQL statements.StatementFactory
used by this template to construct and run Cassandra CQL statements.StatementFactory
public <T> ListenableFuture<List<T>> select(String cql, Class<T> entityClass)
AsyncCassandraOperations
SELECT
query and convert the resulting items to a List
of entities.select
in interface AsyncCassandraOperations
cql
- must not be null.entityClass
- The entity type must not be null.public <T> ListenableFuture<Void> select(String cql, Consumer<T> entityConsumer, Class<T> entityClass) throws DataAccessException
AsyncCassandraOperations
SELECT
query and convert the resulting items notifying Consumer
for each entity.select
in interface AsyncCassandraOperations
cql
- must not be null.entityConsumer
- object that will be notified on each entity, one object at a time, must not be
null.entityClass
- The entity type must not be null.DataAccessException
- if there is any problem executing the query.public <T> ListenableFuture<T> selectOne(String cql, Class<T> entityClass)
AsyncCassandraOperations
SELECT
query and convert the resulting item to an entity.selectOne
in interface AsyncCassandraOperations
cql
- must not be null.entityClass
- The entity type must not be null.public <T> ListenableFuture<List<T>> select(com.datastax.driver.core.Statement statement, Class<T> entityClass)
AsyncCassandraOperations
SELECT
query and convert the resulting items to a List
of entities.select
in interface AsyncCassandraOperations
statement
- must not be null.entityClass
- The entity type must not be null.public <T> ListenableFuture<Slice<T>> slice(com.datastax.driver.core.Statement statement, Class<T> entityClass)
AsyncCassandraOperations
SELECT
query with paging and convert the result set to a Slice
of entities.
A sliced query translates the effective fetch size
to the page size.slice
in interface AsyncCassandraOperations
statement
- the CQL statement, must not be null.entityClass
- The entity type must not be null.CassandraPageRequest
public <T> ListenableFuture<Void> select(com.datastax.driver.core.Statement statement, Consumer<T> entityConsumer, Class<T> entityClass) throws DataAccessException
AsyncCassandraOperations
SELECT
query and convert the resulting items notifying Consumer
for each entity.select
in interface AsyncCassandraOperations
statement
- must not be null.entityConsumer
- object that will be notified on each entity, one object at a time, must not be
null.entityClass
- The entity type must not be null.DataAccessException
- if there is any problem executing the query.public <T> ListenableFuture<T> selectOne(com.datastax.driver.core.Statement statement, Class<T> entityClass)
AsyncCassandraOperations
SELECT
query and convert the resulting item to an entity.selectOne
in interface AsyncCassandraOperations
statement
- must not be null.entityClass
- The entity type must not be null.public <T> ListenableFuture<List<T>> select(Query query, Class<T> entityClass) throws DataAccessException
AsyncCassandraOperations
SELECT
query and convert the resulting items to a List
of entities.select
in interface AsyncCassandraOperations
query
- must not be null.entityClass
- The entity type must not be null.DataAccessException
- if there is any problem executing the query.public <T> ListenableFuture<Slice<T>> slice(Query query, Class<T> entityClass) throws DataAccessException
AsyncCassandraOperations
SELECT
query with paging and convert the result set to a Slice
of entities.slice
in interface AsyncCassandraOperations
query
- the query object used to create a CQL statement, must not be null.entityClass
- The entity type must not be null.DataAccessException
- if there is any problem executing the query.CassandraPageRequest
public <T> ListenableFuture<Void> select(Query query, Consumer<T> entityConsumer, Class<T> entityClass) throws DataAccessException
AsyncCassandraOperations
SELECT
query and convert the resulting items notifying Consumer
for each entity.select
in interface AsyncCassandraOperations
query
- must not be null.entityConsumer
- object that will be notified on each entity, one object at a time, must not be
null.entityClass
- The entity type must not be null.DataAccessException
- if there is any problem executing the query.public <T> ListenableFuture<T> selectOne(Query query, Class<T> entityClass) throws DataAccessException
AsyncCassandraOperations
SELECT
query and convert the resulting item to an entity.selectOne
in interface AsyncCassandraOperations
query
- must not be null.entityClass
- The entity type must not be null.DataAccessException
- if there is any problem executing the query.public ListenableFuture<Boolean> update(Query query, Update update, Class<?> entityClass) throws DataAccessException
AsyncCassandraOperations
update
in interface AsyncCassandraOperations
query
- must not be null.update
- must not be null.entityClass
- The entity type must not be null.DataAccessException
- if there is any problem executing the query.public ListenableFuture<Boolean> delete(Query query, Class<?> entityClass) throws DataAccessException
AsyncCassandraOperations
Query
.delete
in interface AsyncCassandraOperations
query
- must not be null.entityClass
- The entity type must not be null.DataAccessException
- if there is any problem executing the query.public ListenableFuture<Long> count(Class<?> entityClass)
AsyncCassandraOperations
count
in interface AsyncCassandraOperations
entityClass
- must not be null.public ListenableFuture<Boolean> exists(Object id, Class<?> entityClass)
AsyncCassandraOperations
entityClass
with the given id
exists.exists
in interface AsyncCassandraOperations
id
- the Id value. For single primary keys it's the plain value. For composite primary keys either the
PrimaryKeyClass
or
MapId
. Must not be null.entityClass
- must not be null.public <T> ListenableFuture<T> selectOneById(Object id, Class<T> entityClass)
AsyncCassandraOperations
id
for the given entityClass
.selectOneById
in interface AsyncCassandraOperations
id
- the Id value. For single primary keys it's the plain value. For composite primary keys either the
PrimaryKeyClass
or
MapId
. Must not be null.entityClass
- The entity type must not be null.public <T> ListenableFuture<T> insert(T entity)
AsyncCassandraOperations
insert
in interface AsyncCassandraOperations
entity
- The entity to insert, must not be null.public ListenableFuture<WriteResult> insert(Object entity, InsertOptions options)
AsyncCassandraOperations
WriteOptions
and return the entity if the insert was applied.insert
in interface AsyncCassandraOperations
entity
- The entity to insert, must not be null.options
- must not be null.WriteResult
for this operation.InsertOptions.empty()
public <T> ListenableFuture<T> update(T entity)
AsyncCassandraOperations
update
in interface AsyncCassandraOperations
entity
- The entity to update, must not be null.public ListenableFuture<WriteResult> update(Object entity, UpdateOptions options)
AsyncCassandraOperations
WriteOptions
and return the entity if the update was applied.update
in interface AsyncCassandraOperations
entity
- The entity to update, must not be null.options
- must not be null.WriteResult
for this operation.UpdateOptions.empty()
public <T> ListenableFuture<T> delete(T entity)
AsyncCassandraOperations
delete
in interface AsyncCassandraOperations
entity
- must not be null.public ListenableFuture<WriteResult> delete(Object entity, QueryOptions options)
AsyncCassandraOperations
QueryOptions
and return the entity if the delete was applied.delete
in interface AsyncCassandraOperations
entity
- must not be null.options
- must not be null.WriteResult
for this operation.QueryOptions.empty()
public ListenableFuture<Boolean> deleteById(Object id, Class<?> entityClass)
AsyncCassandraOperations
deleteById
in interface AsyncCassandraOperations
id
- the Id value. For single primary keys it's the plain value. For composite primary keys either the
PrimaryKeyClass
or
MapId
. Must not be null.entityClass
- The entity type must not be null.public ListenableFuture<Void> truncate(Class<?> entityClass)
AsyncCassandraOperations
TRUNCATE
query to remove all entities of a given class.truncate
in interface AsyncCassandraOperations
entityClass
- The entity type must not be null.Copyright © 2011–2018 Pivotal Software, Inc.. All rights reserved.