Cayenne is a mature, powerful, full-featured open source Object/Relational Mapping (ORM) framework. Cayenne is written in Java and is intended for Java developers working with relational databases. Cayenne has been successfully used in production environment in a wide range of applications.
Cayenne allows to reduce the development time in any database project by creating an object-oriented abstraction of the database schema. Development teams using Cayenne will be able to concentrate on the core business requirements and the data model instead of the SQL details.
Cayenne features include management of persistent Java objects mapped to relational databases, single method call queries and updates (including atomic updates of all modified objects), seamless integration of multiple databases into a single virtual data source, remote object persistence, etc. Cayenne is distributed with CayenneModeler - a complete GUI mapping tool that supports reverse-engineering of RDBMS schema, editing database mappings and generation of Java source code for the persistent objects. Any SQL database which provides JDBC connectivity will work with Cayenne, although for better integration we provide adapters for the following DB's.
Cayenne comes with a comprehensive set of HTML documentation and full source code, including source code for the GUI tools. Free support is provided via user mailing lists. Commercial support and consulting services are also available.
Cayenne framework provides two flavors of object persistence: Cayenne Persistence API and Remote Object Persistence (ROP). Both are dealing with object persistence, and are based on the same underlying Cayenne stack:
- Cayenne Persistence API is a general purpose object-relational API and XML mapping format. CayenneModeler GUI tool is used to create the mapping. When we say "Cayenne" throughout the documentation, we usually mean Cayenne Persistence API flavor, unless ROP is explicitly mentioned.
- Remote Object Persistence (ROP) is not a standalone persistence API. Rather this is a technology that enables the use of Cayenne Persistence API on remote client applications. This architecture is demonstrated here. Often (but not always) ROP clients are SWT or Swing applications that can not (or should not) access the database directly, and/or benefit from separation of the server and client logic.