Fork me on GitHub

river-framework

Object-Document Mapper for NoSQL databases

A single interface for different NoSQL databases, written in Java

Its design is oriented to provide one coding style for different NoSQL databases.
That's the main goal of this project.

At development stage

This project is growing, learning from different databases and proposing a common interface
for all.

The current version

  • Supports IBM Notes and it's stable
  • Has Couchbase Lite in development
  • That's all so far but it's not finished yet. This is just the beginning :-)

What is
next?

  • Support Couchbase Lite
  • Support MongoDB
  • Support Neo4J
  • Support Couchbase
  • Support CouchDB
  • Support graphs for document relationship
  • Support transactions
  • Support a query language (SQL++)

Do you want to receive news?   

How does the code look?

So far, the Java code written with this ODM looks like this:

//Opening a session
Session session = River.getSession(River.LOTUS_DOMINO, "server", "username", "password");
Database database = session.getDatabase(AddressBook.class, "server", "example.nsf");

// Creating a new person document
database.createDocument(Person.class)
  .setField("Name", "John Doe")
  .setField("Age", 35)
  .generateId()
  .save();

// Searching people with name "John Doe"              
DocumentIterator it = database.search("Name=\"John Doe\"");

for(Document doc: it)   {
  System.out.println("Found " + doc.getId());
  System.out.println("Name: " + doc.getFieldAsString("Name"));
  System.out.println("Age: " + doc.getFieldAsInteger("Age"));
}

session.close();

Learn more

Getting Started

It requires Java JDK 1.6+, IBM Notes 8.5+, and the River Framework. Please, follow the instructions from this link.

Demos as Maven Projects

If you're feeling daring, you can download demos for Eclipse from this GitHub repo.

The Project

If you want to know about current features, next versions, binaries, Maven artifacts, known issues and the changelog, you will find them at its GitHub repo

Documentation

Guides and javadoc files will be written along September and Octuber of this year.

About the project

Over the last decade, I have been working as an IBM Notes workflow application Developer. But after developing similar applications over and over at my job, five years ago, I took the initiative to develop an Application Framework (Workflow + ODM) in LotusScript, the native IBM Notes programming language.

It was really useful and fun to work on!

Anyway, in November 2014, I started to design and write a new one in Java in my spare time, at home. The design is different from the previous one in LotusScript, since it will consider not only IBM Notes, but important NoSQL databases like MongoDB, Neo4J, CouchDB and Couchbase. So, I am incorporating all the features that I would like to have. In this project I'm focusing only in the ODM part. I hope to write the Workflow part in the near future, when the River Framework goals have been achieved.

I expected this work to be useful for you. I'll be looking forward to hear your ideas, comments or questions at mario.sotil@gmail.com

One big hug and thank you for your interest.

Do you want to receive news?