While the REST interface to Documents and Views in Couch does not require a rich mapping layer (as opposed to the richness of SQL ORM frameworks), I still found it cumbersome to work directly with HTTP all the time in order to store/query my model objects to/from CouchDB.
Currently the Lift-Record framework has a Record implementation for relational databases (Squeryl), as well as Mongo-Record and CouchDB-Record implementations which gained prominence with recent increased interest in NoSQL storage. While the CouchDB-Record implementation is not complete, it has enough features to make it useful when working with CouchDB and Lift. Using CouchDB-Record I could easily map my domain model to the underlying database, and abstract the HTTP layer when I wanted to. The CouchDB-Record implementation did not offer everything that you might expect from a typical O(R)M framework - specifically there are some missing features such as associations mapping, lazy loading, caching.
- When building your next tool or product never ignore the power of habits
- How much less time would be spend hacking (and writing about) CouchDB libraries, if there would be a set of official or at least officially-backed CouchDB drivers and libraries.
Original title and link: Resolving Some CouchDB-Record Inconsistencies in Scala ( ©myNoSQL)