The sql package contains classes for providing ORM (Object Relational Model) functionality to POJava. A bean or POJO is mapped to a table or view in a database using a TableMap. Each field in that mapping is specified in a FieldMap. Finally, the transformations that occur in adapting field data from the Database to the POJO and back are managed by AdaptorMaps.

There is a DataSourceMetadata object for capturing MetaData about a database, and there is a DatabaseCache for quick access to a variety of data objects gathered.

There are also objects for coordinating transactions between multiple Connection objects. Collectively, these objects provide a very smooth and minimalistic means of handling the vast majority of database interactions.

Here's a brief (if impractical) example: DistributedTransaction trans=new DistributedTransaction(); List widgets=WidgetDao.listByQuery(trans, new WidgetQuery().forColor("purple")); for (Iterator it=widgets.iterator(); it.hasNext();) { Widget widget=(Widget) it.next(); Woozle woozle=new Woozle(widget.getId(), widget.getGizzard()); WoozleDao.updateInsert(trans, woozle); } trans.commit();