Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何只准备一次Cassandra访问器查询_Java_Cassandra_Cassandra 2.0_Datastax Java Driver - Fatal编程技术网

Java 如何只准备一次Cassandra访问器查询

Java 如何只准备一次Cassandra访问器查询,java,cassandra,cassandra-2.0,datastax-java-driver,Java,Cassandra,Cassandra 2.0,Datastax Java Driver,我在用电脑。为了使用对象映射器,我创建了一个访问器 @Accessor public interface MyAccessor { @Query("SELECT * FROM my_table WHERE id = ? AND event_day = ? AND event_time > ? AND event_time < ?") Result<MyEvent> getEvents(UUID id, String eventDay, Date event

我在用电脑。为了使用
对象映射器
,我创建了一个
访问器

@Accessor
public interface MyAccessor
{
    @Query("SELECT * FROM my_table WHERE id = ? AND event_day = ? AND event_time > ? AND event_time < ?")
    Result<MyEvent> getEvents(UUID id, String eventDay, Date eventFromDate, Date eventToDate);
}
@Accessor
公共接口访问器
{
@查询(“从my_表中选择*,其中id=?和event_day=?和event_time>?和event_time<?”)
结果getEvents(UUID id、字符串eventDay、日期eventFromDate、日期eventToDate);
}
我在如下方法中使用此访问器:

public List<MyEvent> getEvents(UUID id, String eventDay, Date eventFromDate, Date eventToDate)
    {
        MappingManager manager = new MappingManager(_cassandraDatabaseManager.getSession());

        MyAccessor myAccessor= manager.createAccessor(MyAccessor.class);

        return myAccessor.getEvents(id, eventDay, eventFromDate, eventToDate).all();
    }
公共列表getEvents(UUID id、字符串eventDay、日期eventFromDate、日期eventToDate) { MappingManager=新的MappingManager(_cassandraDatabaseManager.getSession()); MyAccessor MyAccessor=manager.createAccessor(MyAccessor.class); 返回myAccessor.getEvents(id、eventDay、eventFromDate、eventToDate).all(); } 在我的应用程序中,我多次调用此方法,并在日志中收到以下警告:

Re-preparing already prepared query SELECT * FROM my_table WHERE id = ? AND event_day = ? AND event_time > ? AND event_time < ?. Please note that preparing the same query more than once is generally an anti-pattern and will likely affect performance. Consider preparing the statement only once.
重新准备已准备好的查询从my_表中选择*,其中id=?活动日=?和事件时间>?事件时间<?。请注意,多次准备同一查询通常是一种反模式,可能会影响性能。考虑只准备一次陈述。
使用Cassandra存取器的最佳实践是什么?我是否应该只创建一次
访问器
,然后缓存它

我应该只创建一次访问器,然后缓存它吗


您至少应该缓存
MappingManager
。它在内部缓存访问器实例,因此在同一管理器实例上连续调用
createAccessor
,只需查找哈希映射即可。如果要避免这种查找,也可以缓存访问器实例。

谢谢。我在CassandraDatabaseManager单例中添加了
MappingManager
的创建,一切都很好。奇怪的是,我找不到任何有关这方面的信息。Datastax文档中没有关于此主题的内容。