我目前使用Cassandra 2的Datastax Cassandra驅動程序來執行cql3。這工作正常。我開始使用PreparedStatement's
:使用Datastax Cassandra驅動程序時需要重複使用PreparedStatement嗎?
Session session = sessionProvider.getSession();
try {
PreparedStatement ps = session.prepare(cql);
ResultSet rs = session.execute(ps.bind(objects));
if (irsr != null) {
irsr.read(rs);
}
}
有時我從司機的警告在我的日誌:
Re-preparing already prepared query . 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.
這一警告是有道理的,但我不知道我應該如何重用PreparedStatement
?
我應該在構造函數/ init方法中創建所有我的PreparedStatement
,而不是簡單地使用它們嗎?
但這並不順利,當多個線程使用相同的PreparedStatement
在同一時間(尤其是呼籲PreparedStatement.bind()
綁定對象)
感謝Daniel的回覆。當綁定被調用時創建和返回BoundStatement解釋了所有事情,現在我可以正確使用準備語句而不必擔心。 – TinusSky