Cassandra 3.x to 4.x driver differences

Viewed 810

Can anyone tell me how to replication this old annotation from the Datastax 3.x series of drivers to the new 4.x series:

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

I got the name down: @CqlName("mytable"), just not the consistencies.

We use mappers exclusively in our code - they are fast, and did a lot of boiler-plate stuff for you in the 3.x driver. In 4.x, not so much and it's frustrating. There are some things we rely on that I just cannot figure out - like this.

Also (different question but I'll ask here). Can I set a profile on a session? Struggling with that one too.

1 Answers

As driver upgrade guide says:

the "mapper" and "accessor" concepts have been unified into a single "DAO" component, that handles both pre-defined CRUD patterns, and user-provided queries.

In your case you're switching from @Table to @Entity, like this:

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

}

And then you define Dao class where you define individual operations, like, insert/delete/select:

@Dao
public interface ProductDao {

  @Select
  MyPojoClass findBySomething();

  @Insert
  void save(MyPojoClass cls);

  @Delete
  void delete(MyPojoClass cls);
}

these operations could be annotated with @StatementAttributes annotation, that has consistencyLevel, executionProfileName, and many other attributes.

P.S. For me, one of the big improvements in new Mapper is that you may use the same Entity class with multiple keyspaces & tables inside the same session...

Related