Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Couchbase Java SDK with Rx-Java

DZone's Guide to

Couchbase Java SDK with Rx-Java

Couchbase Java SDK is built on top of the Rx-Java library, enabling a reactive way to interact with a Couchbase server.

· Database Zone ·
Free Resource

Read the 2019 State of Database DevOps Report for the very latest insights

A neat thing about CouchbaseJava SDK is that it is built on top of the excellent Rx-Java library, this enables a reactive way to interact with a Couchbase server instance which is very intuitive once you get the hang of it.

Consider a very simple json document that I intend to store in Couchbase:

{"key":"1","value":"one"}

and a Java class to hold this json:

public class KeyVal {
private String key;
private String value;

...
}

The following is the code to insert an instance of KeyVal to a Couchbase bucket:

JsonObject jsonObject = JsonObject.empty().put("key", keyVal.getKey()).put("value", keyVal.getValue());
JsonDocument doc = JsonDocument.create(keyVal.getKey(), jsonObject);
Observable<JsonDocument> obs = bucket
.async()
.insert(doc);

The return type of the insert is an Observable, so if I needed to map the return type back a KeyVal I can use the extensive mapping support provided by Observable class.

Observable<KeyVal> obs = bucket
.async()
.insert(doc)
.map(jsonDoc ->
new KeyVal(jsonDoc.id(), jsonDoc.content().getString("value"))
   );

Other API's follow a similar pattern, for eg. to retrieve the saved document:

bucket
.async()
.get(id)
.map(doc ->
new KeyVal(doc.id(),
doc.content().getString("value")));

If you are interested in exploring this sample further, here is my github repo with a working example - https://github.com/bijukunjummen/sample-karyon2-couch

References:

Read the 2019 State of Database DevOps Report for latest insights into DevOps adoption among SQL Server professionals, and the benefits and challenges of including the database in DevOps initiatives

Topics:
database ,nosql ,couchbase ,java sdk ,rx java

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}