About - CPO 5.0.5-SNAPSHOT

What is CPO?

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.

Features

  • Database
    • 100% Native SQL Support
    • DBMS Custom Datatype Support
    • Database Connection Pooling
    • Cached Prepared Statements
    • Cached Callable Statements
    • DBMS Function Support
    • DBMS Stored Procedure Support
    • BLOB Support, including Oracle BLOBs
    • Column Level Encryption/Decryption
    • Column Level Compression
    • Multi-User Access to MetaData
    • JDBC Transaction Support
    • Automatic Batch Updates
    • Dynamic Where Clauses
    • Dynamic Order By Clauses
    • POJO based persistence
    • One POJO to One Table
    • One POJO to Many Tables
    • One POJO to Many Records in One Table (Name-Value Pairs)
    • POJOs can be Sparsely or Fully Populated Based on Context
    • POJOs can be populated by the OUT parameters of the Stored Procedure
    • Single POJO can have Multiple Data Representations within a DBMS
    • Supports simultaneous access to multiple datasources
    • POJOs can be shared across multiple datasources
  • Java
    • Runs in Swing Apps
    • Runs in Console Apps
    • Runs in Servlets
    • Runs in EJBs
    • Runs as an EJB
    • Fully Multithreaded
    • Can Run as a Singleton
    • Small Footprint (68K)
    • Hot Deployable Metadata
    • Supports Primitive types
    • Supports Inheritence and Polymorphism