Class Persistence Object (CPO) is a java api and utility program for Object to JDBC Mapping (OJM). Unlike Object Relational Mapping (ORM) technologies and the java persistence api, CPO is designed to allow you to fully utilize the native sql and functionality of your database.
CPO is a Class Persistence interface for storing objects in different datasources. The interface is currently implemented for JDBC datasources but can be expanded to XML, Flat File, RMS, LDAP, etc.
The jdbc implementation of CPO provides an OJM api and utility. OJM differs from ORM and the Java Persistence API (JPA) in that it lets the developer, database admin, or data architect be responsible for the design of the database. The developer uses CPO to map plain old java objects (POJOs) to JDBC calls which execute native sql against the database. This provides the most flexibility when accessing legacy databases where the developers may have little control over the DBMS. This also allows you to use all of the syntax, functions, data types, and stored procedures available in the database.
CPO has been tested using Oracle, MySql, and HSqlDB. We have been using CPO for over three years and thought that it may be useful to others as well.