我不明白如何用SpringDataCassandra实现非常简单的目标。
我想用不同的参数值多次执行“insert”语句。我现在没有Map域类,所以我使用 CqlOperations
spring数据提供的接口。
当我使用 execute(String cql, Object... args)
,cassandra驱动程序抱怨“重新准备已经准备好的查询通常是一种反模式,可能会影响性能。考虑只编写一次声明”。因为spring数据使用 SimplePreparedStatementCreator
. 但我看不出有什么方法可以让spring数据使用 CachedPreparedStatementCreator
相反。我看到的只是 execute(PreparedStatementCreator psc)
方法,该方法不允许我提供参数值。
那么,有没有办法告诉spring数据使用适当的语句缓存,或者实现类似的功能呢 execute(PreparedStatementCreator, Object...)
?
1条答案
按热度按时间klsxnrf11#
CqlTemplate
公开回调和定制钩子,允许根据应用程序的需要定制它的一些功能。CqlTemplate
没有缓存是故意的,因为缓存会导致时间和空间的考虑。SpringDataCassandra无法做出决策,因为我们无法假设应用程序通常需要什么。Spring Data Cassandra的包
core.cql.support
支持的船舶CachedPreparedStatementCreator
和一个PreparedStatementCache
你可以用它来达到这个目的。子类
CqlTemplate
并覆盖其newPreparedStatementCreator(…)
方法来指定PreparedStatementCreator
使用。以下示例显示了具有无限保留期的缓存的示例: