Support of CouchDB for Java
CAST supports CouchDB via its com.castsoftware.nosqljava extension. Details about how this support is provided for Java source code is discussed below.
Supported Libraries
| Library | Version | Supported |
|---|---|---|
| LightCouch | Up to: 0.2.0 | ✅ |
| Ektorp | Up to: 1.5.x | ✅ |
Supported Operations
| Operation | Methods supported |
|---|---|
| Insert | org.lightcouch.CouchDbClient.save org.lightcouch.CouchDbClient.post org.lightcouch.CouchDbClient.batch org.ektorp.CouchDbConnector.create |
| Select | org.lightcouch.CouchDbClient.find org.lightcouch.CouchDbClient.findAny org.lightcouch.CouchDbClient.contains org.ektorp.CouchDbConnector.get org.ektorp.CouchDbConnector.contains |
| Delete | org.lightcouch.CouchDbClient.remove org.ektorp.CouchDbConnector.delete |
| Update | org.lightcouch.CouchDbClient.update org.ektorp.CouchDbConnector.update |
Objects
| Icon | Description |
|---|---|
![]() |
Java CouchDB connection |
![]() |
Java CouchDB database |
![]() |
Java CouchDB collection |
![]() |
Java Unknown CouchDB connection |
![]() |
Java Unknown CouchDB database |
![]() |
Java Unknown CouchDB collection |
Links
| Link type | Source and destination of link | Methods supported |
|---|---|---|
| belongsTo | From Java CouchDB collection object to Java CouchDB database object From Java CouchDB database object to Java CouchDB connection object |
- |
| useLink | Between the caller Java Method objects (constructors also) and Java CouchDB Collection Object | batch |
| useSelectLink | Between the caller Java Method objects (constructors also) and Java CouchDB Collection Object | find findAny contains get |
| useUpdateLink | Between the caller Java Method objects (constructors also) and Java CouchDB Collection Object | update |
| useDeleteLink | Between the caller Java Method objects (constructors also) and Java CouchDB Collection Object | remove delete |
| useInsertLink | Between the caller Java Method objects (constructors also) and Java CouchDB Collection Object | save post create |
What results can you expect?
Some example scenarios are shown below:
CouchDB databse and collection
public CouchDBSimpleCrud() {
HttpClient httpClient = new StdHttpClient.Builder()
.host("localhost")
.port(5984)
.build();
CouchDbInstance instance = new StdCouchDbInstance(httpClient);
this.connector = instance.createConnector("productdb", true);
}
/**
* Create a new product document
*/
public void createProduct() {
Product product = new Product("P001", "Laptop", 999.99);
connector.create(product);
}
/**
* Read a product document by ID
*/
public void readProduct() {
Product product = connector.get(Product.class, "P001");
System.out.println("Product: " + product.getName());
}

Insert Operation (LightCouch)
public void createProduct() {
Product product = new Product("P001", "Laptop", 999.99);
connector.create(product);
}

Select Operation (LightCouch)
public void readProduct() {
Product product = connector.get(Product.class, "P001");
System.out.println("Product: " + product.getName());
}
}

Update Operation (Ektorp)
public void updateProduct() {
Product product = connector.get(Product.class, "P001");
product.setPrice(1299.99);
connector.update(product);
}

Delete Operation (Ektorp)
public void deleteProduct() {
Product product = connector.get(Product.class, "P001");
connector.delete(product);
}

Known Limitations
- If database name is not resolved in the CRUD API, then link is created with unknown database object.
- If document ID cannot be resolved, link is created with unknown collection object.





