DataMapper is an object-relational mapper library written in Ruby that follows the active record pattern even though the name implies it follows the data mapper pattern. While DataMapper 1 may not have achieved total decoupling between object and database suggested by the data mapper pattern, it appears DataMapper 2 intended to change this (a la Virtus, a library adapted from DataMapper). The DataMapper 2 project was renamed before launch and was released as Ruby Object Mapper (ROM) in August 2013.
Some features of DataMapper:
- Eager loading of child associations to avoid (N+1) queries
- Lazy loading of select properties, e.g., larger fields
- Query chaining, and not evaluating the query until absolutely necessary (using a lazy array implementation)
- An API not too heavily oriented to SQL databases
DataMapper was designed to be a more abstract ORM, not strictly SQL, based on Martin Fowler's enterprise pattern. As a result, DataMapper adapters have been built for other non-SQL databases, such as CouchDB, Apache Solr, and webservices such as Salesforce.com.
External links
References
"datamapper wiki: Roadmap". GitHub. https://github.com/datamapper/dm-core/wiki/Roadmap ↩
"Where is DataMapper 2?". Google Groups. https://groups.google.com/forum/#!topic/datamapper/ng-e4kYaCck ↩
"DataMapper - Why DataMapper?". Archived from the original on 2010-10-08. Retrieved 2010-10-12. https://web.archive.org/web/20101008025706/http://datamapper.org/why ↩
Fowler, Martin; David Rice; Matthew Foemmel; Edward Hieatt; Robert Mee; Randy Stafford (November 2002). Patterns of Enterprise Application Architecture. Addison-Wesley. ISBN 0-321-12742-0. 0-321-12742-0 ↩
"Kabari's dm-couchdb-adapter at master - GitHub". GitHub. Archived from the original on 2009-08-27. Retrieved 2016-01-02. https://web.archive.org/web/20090827004529/http://github.com/kabari/dm-couchdb-adapter/tree/master ↩
"Lritter/Dm-solr-adapter". GitHub. 13 August 2019. https://github.com/lritter/dm-solr-adapter/tree/master ↩
"Dm-salesforce". GitHub. 22 February 2020. https://github.com/halorgium/dm-salesforce/tree/master ↩