我使用Spring和Cassandra作为底层数据库。曾提到春季保护伞项目"春季数据卡桑德拉"。与hibernate不同,找不到如何在此处管理事务。如果你们中的一些人已经加入了交易经理,请分享交易经理的详细信息。
Cassandra不支持传统意义上的事务(ACID)。有一些构造可以在特殊情况下实现事务原子性,比如原子批(请参阅http://www.datastax.com/dev/blog/atomic-batches-in-cassandra-1-2)或轻量级事务(请参阅http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0),但没有任何东西适合进行全面的交易管理。
这主要是Cassandra体系结构的结果,该体系结构专注于传统关系数据库无法实现的可扩展性和容错性。
Cassandra批处理当前默认为原子级。http://docs.datastax.com/en/cql/3.0/cql/cql_reference/batch_r.html
因此,它可能是春季数据中与@Transactional最好的等价物(尽管,完整的ACID不适合这个世界,但它并不是这样玩的)
应该玩这样的游戏(你可以根据自己的意愿更改ConsistencyLevel和RetryPolicy的值——这就是问题所在!):
Insert insert1 = CassandraTemplate.createInsertQuery("table1", value1, new WriteOptions(ConsistencyLevel.LOCAL_ONE, RetryPolicy.DEFAULT), cassandraConverter);
Insert insert2 = CassandraTemplate.createInsertQuery("table2", value2, new WriteOptions(ConsistencyLevel.LOCAL_ONE, RetryPolicy.DEFAULT), cassandraConverter);
Batch batch = QueryBuilder.batch(insert1,insert2);
//cassandraOperations - object of CassandraTemplate , injected by Spring
cassandraOperations.execute(batch);