【问题标题】:Cassandra 3.x to 4.x driver differencesCassandra 3.x 到 4.x 驱动程序的差异
【发布时间】:2020-07-08 11:11:53
【问题描述】:

谁能告诉我如何将这个旧注释从 Datastax 3.x 系列驱动程序复制到新的 4.x 系列:

@Table(
        name = "mytable",
        readConsistency = "LOCAL_ONE",
        writeConsistency = "LOCAL_QUORUM")

我记下了这个名字:@CqlName("mytable"),只是没有一致性。

我们在我们的代码中专门使用映射器 - 它们速度很快,并且在 3.x 驱动程序中为您做了很多样板文件。在 4.x 中,没有那么多,而且令人沮丧。有一些我们依赖的东西我就是想不通——比如这个。

另外(不同的问题,但我会在这里问)。我可以在会话中设置配置文件吗?也在为此苦苦挣扎。

【问题讨论】:

  • 你能写出你正在苦苦挣扎的东西吗? 4.x 中的映射器完全不同,但与 3.x 映射器相比,它具有更多功能...
  • 在这个例子中,如何让我的 [Dao] [Insert] 的一致性级别为 1,而 [Dao] [Select] 的一致性级别为 quorum。如果我使用普通语句就可以做到……但是,我们喜欢 [Mapper]。
  • 在这个类中...我需要 Select 和 Insert 接口具有不同的一致性级别。 @@Dao 公共接口 FieldTestsDao { @@Select PagingIterable findById(String id); @@Select FieldTests findByKeyFields(String id, String source, String subSource); @@Insert void save(FieldTests ft);

标签: cassandra datastax cassandra-driver


【解决方案1】:

作为driver upgrade guide says:

“映射器”和“访问器”概念已统一到一个“DAO”组件中,该组件处理预定义的 CRUD 模式和用户提供的查询。

在您的情况下,您正在从 @Table 切换到 @Entity,如下所示:

@Entity
@CqlName("mytable")
class MyPojoClass {

}

然后定义Dao class,在其中定义单个操作,例如插入/删除/选择:

@Dao
public interface ProductDao {

  @Select
  MyPojoClass findBySomething();

  @Insert
  void save(MyPojoClass cls);

  @Delete
  void delete(MyPojoClass cls);
}

这些操作可以使用@StatementAttributes 注释进行注释,该注释具有consistencyLevelexecutionProfileName 和许多其他属性。

附:对我来说,新 Mapper 的一大改进是您可以在同一个会话中使用具有多个键空间和表的同一个实体类...

【讨论】:

猜你喜欢
  • 2017-03-21
  • 2023-02-13
  • 2017-03-23
  • 2012-09-18
  • 2014-03-04
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多