Using Couchbase Sdk for Java
Start CouchBase in a Docker container:
sudo apt update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
sudo docker run -d --name couchbase1 -p 8091-8096:8091-8096 -p 11210-11211:11210-11211 couchbase
sudo docker logs couchbase1
Configure the CouchBase server by going to the URL http://localhost:8091
Create a Maven project with the dependency
<dependency>
<groupId>com.couchbase.client</groupId>
<artifactId>java-client</artifactId>
<version>3.2.5</version>
</dependency>
Define a connection to the server with:
Cluster cluster = Cluster.connect("15.207.99.102", "root", "20220309");
Use the CRUD API like this:
private static void demo1() {
Bucket bucket = cluster.bucket("balti");
Scope scope = bucket.scope("_default");
Collection collection = scope.collection("_default");
MutationResult modResult = collection.upsert(
"meta",
"This collection is for cars"
);
GetResult result = collection.get("meta");
String myStr = result.contentAs(String.class); //.convertContentToString(); //result.contentAsObject().getString("meta");
System.out.println(myStr);
modResult = collection.upsert(
"meta2",
JsonObject.create()
.put("name", "Nitin")
.put("city", "Dubai")
);
result = collection.get("meta2");
myStr = result.contentAsObject().getString("name");
System.out.println(myStr);
modResult = collection.upsert("meta3", new Person("Nitin", "Reddy"));
result = collection.get("meta3");
Person person = result.contentAs(Person.class);
System.out.println(person.lastName);
}
Use the N1QL API like this:
private static void demo2() {
Part part1 = new Part();
part1.isStockable = true;
part1.partCode = "A001";
part1.createdDate = new Date();
part1.description = "Gear box and shift lever";
part1.primarySupplier = "Toyo";
part1.unitOfMeasure = "Set";
Part part2 = new Part();
part2.isStockable = true;
part2.partCode = "A002a";
part2.createdDate = new Date();
part2.description = "Sack of potatoes for french fries";
part2.primarySupplier = "Patata";
part2.unitOfMeasure = "Kilo";
Bucket bucket = cluster.bucket("bucket1");
Scope scope = bucket.scope("tenant0");
Collection collection = scope.collection("parts");
collection.upsert(part1.partCode, part1);
collection.upsert(part2.partCode, part2);
//N1QL: CREATE PRIMARY INDEX my_bucket1_index_name ON bucket1.tenant0.parts;
CreatePrimaryQueryIndexOptions opts = CreatePrimaryQueryIndexOptions
.createPrimaryQueryIndexOptions()
.ignoreIfExists(true)
.indexName("my_bucket1_index_name")
;
cluster.queryIndexes().createPrimaryIndex("bucket1", opts);
//See other index types at https://docs.couchbase.com/server/current/guides/create-index.html
//N1QL query
QueryResult qresult = cluster.query("SELECT * FROM bucket1.tenant0.parts WHERE unitOfMeasure = \"Set\"");
System.out.println(qresult.rowsAsObject());
}