0

Cassandra database最近一緒に働き始めました。そして、私が作成したデータの1つにデータを挿入しようとしColumn Familyていました。

以下は、Cassandra データベースに挿入しようとしているコードです。

私の場合20 columns、列ファミリーにあるので、以下の行を追加する必要があります

mutator.newColumn("Column Name", "Column Value");

以下のコードで20回、私には醜く見えます。リフレクションまたはその他の方法を使用して、以下のメソッドを単純化できる方法はありますか?

for (int userId = id; userId < id + noOfTasks; userId++) {

    Mutator mutator = Pelops.createMutator(thrift_connection_pool);

    mutator.writeColumns(column_family, String.valueOf(userId),
            mutator.newColumnList(
            mutator.newColumn("a_account", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_advertising", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_avg_selling_price_main_cats", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_cat_and_keyword_rules", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_csa_categories_purchased", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_customer_service", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_demographic", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_favorite_searches", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_favorite_sellers", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_financial", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}")
            mutator.newColumn(some othe column, its value)
            .....
            .....
            .....
            ));


    mutator.execute(ConsistencyLevel.ONE);
}

上記の方法を簡素化するための助けは、私にとって非常に役立ちます。ここでリフレクションを使用できますか?何かご意見は?

4

1 に答える 1

1

ColumnList を事前に定義できます。「マップ」という名前の変数で、名前のマップと値の文字列バージョンを渡すとします。コードは次のようになります。

Mutator mutator = Pelops.createMutator(thrift_connection_pool);
ArrayList<Column> columnList = new ArrayList<Column>();
for (Map.Entry<String, String> entry : map.entrySet()) {
    columnList.add(mutator.newColumn(entry.getKey(), entry.getValue()));
}
mutator.writeColumns(column_family, String.valueOf(userId), columnList);
于 2013-04-09T04:18:45.387 に答える