在 lagom 框架中准备语句和绑定?

Prepared Statement and Bind in lagom framework?

Q1。什么是准备好的陈述?
例如:

var userStatmt: PreparedStatement = _

for {
      insert <- cassandraSession.prepare(
        "INSERT INTO usertable(id, name) VALUES(?, ?)")
    } yield {
      userStatmt = insert
      Done
    }

prepared statement是不是表示存储的话因为下面如果不存储下面的name怎么会知道

"SELECT * FROM usertable WHERE name = '$name'"

Q2。如果是这样,为什么使用绑定?
例如:

val userBindStatement: BoundStatement = userStatmt.bind()
userBindStatement.setString("id", user.id)
userBindStatement.setString("name", user.name)

你能解释一下吗,我刚开始使用 lagom 并在 Lagom Readside 中找到了这个,我也是微服务的新手,而且关于这个主题的资源有限。

准备好的语句是一种优化,这意味着语句不需要在每次执行时发送到服务器并进行解析。为了让它起作用,语句的任何动态部分(即参数)都被替换为占位符(即?),然后在执行语句时需要将其绑定到实际值。

顺便说一句,这不是 Lagom 特有的,它是 Cassandra 特有的(即便如此,许多数据库,尤其是关系数据库中也使用相同的概念)。您可以在此处阅读有关它的更多信息,因为它适用于 Cassandra:

https://docs.datastax.com/en/developer/java-driver/3.0/manual/statements/prepared/

这里描述了准备语句的一般概念:

https://en.m.wikipedia.org/wiki/Prepared_statement