据我所知,文档和我所阅读的内容,准备好的声明与会话绑定。所以问题是,如果我关闭连接并重新创建它或者会话被杀死(这怎么可能?),你必须重新创建所有准备好的语句吗?
如果PreparedStatement不是由基础会话实例管理的,那么将获得的异常是什么?
[更新]
我创建了自己的简单语句类来表示预准备语句,因为我在会话存在之前就创建时创建语句。另外,我使用地图按需映射,我准备好了......
答案 0 :(得分:2)
对于Cassandra驱动程序,标准方法是在执行之前准备一次语句并多次绑定变量。
您可以参考这篇文章:http://www.datastax.com/dev/blog/4-simple-rules-when-using-the-datastax-drivers-for-cassandra
我正在分享您可以使用的代码段。在开始突变之前,您需要在应用程序执行开始时执行会话验证和准备语句。
if (session == null) {
session = CassandraUtils.getInstance().getSession();
psUsers = session.prepare("INSERT INTO users(xx, yy, zz, tt) VALUES (?, ?, ?, ?)");
psProducts = session.prepare ("INSERT INTO products(aa, bb, cc, dd) VALUES (?, ?, ?, ?)");
}
来自上面的共享帖子:
每个键空间最多使用一个会话,或者使用单个会话并在查询中明确指定键空间
对于丢失连接部分,驱动程序会为您处理,当然您可以使用不同类型的重新连接策略:http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/policies/Policies.html