1

我正在使用 Cassandra 和 Astyanax 客户端在 Spring Web 应用程序中工作。我想将从 Cassandra 查询中检索到的结果数据转换为 POJO,但我不知道哪个库或 Astyanax API 支持这一点。
例如,我有User具有一些基本属性 ( ) 的列族 (CF),username, password, email并且可以将其他相关的附加信息添加到此 CF。然后我通过使用 OperationResult> 从该 CF 中获取一个用户行来保存返回的数据,如下所示:

OperationResult<ColumnList<String>> columns = getKeyspace().prepareQuery(getColumnFamily()).getRow(rowKey).execute();  

我接下来要做的是将“列”填充到我的User对象中。在这里,我有两个问题,请你帮我解决这个问题:

1/ 什么是用户类的最佳结构来保存从用户 CF 检索到的相应数据?我的建议是:

public class User {
    String userName, password, email; // Basic properties
    Map<String, Object> additionalInfo;
}  

2/ 如何使用通用方法将 Cassandra 数据转换为此 POJO(以便它可以应用于每个已映射 POJO 的单个 CF)?
如果我的问题中有一些愚蠢的东西,我很抱歉,因为我刚刚接触了 NoSQL 概念和 Cassandra 以及 Astyanax 2 周。
非常感谢你的帮助。

4

3 回答 3

2

你可以试试 Achilles:https ://github.com/doanduyhai/achilles ,一个符合 JPA 的 Cassandra 实体管理器

现在有一个通过 Hector 使用 Thrift API 的完整实现。

使用 Datastax Java 驱动程序的 CQL3 实施正在进行中。测试版将在几个月后推出(2013 年 7 月至 8 月)

CQL3 很棒,但它仍然太低级,因为您需要自己从 ResultSet 中提取数据。这就像回到只有 JDBC 模板可用的时代。

阿基里斯在那里填补了空白。

于 2013-06-03T10:55:40.130 回答
0

我建议您使用像 Playorm 这样的库,您可以使用它轻松地对实体执行 CRUD 操作。有关如何创建用户对象的示例, 请参见this ,然后您可以通过以下方式轻松获取 POJO

User user1 = mgr.find(User.class, email);

假设电子邮件是您的 NoSqlId(Cassandra 中的主键或行键)。

于 2013-05-31T10:04:45.020 回答
0

我使用 com.netflix.astyanax.mapping.Mapping 和 com.netflix.astyanax.mapping.MappingCache 正是为了这个目的。

于 2013-10-24T14:54:06.027 回答