This page summarizes the new features and changes introduced in 3.0 release, roughly corresponding to the latest released milestone. Consult RELEASE-NOTES.txt file bundled with each release for the full list of changes, fixes and improvements.
(status: preview)
Cayenne 3.0 includes an in-progress partial implementation of a Java Persistence API specification compliant persistence provider, with support for POJO and JPA annotations. Provider can be used in a standalone mode, as well as a part of a J2EE container.
Currently implemented features:
Many of the improvements below were done to support the JPA provider, still Cayenne applications can take advantage from all of these things without using JPA.
While you can still use DataContext directly, we encourage you to avoid direct dependency on DataContext throughout your code, and instead use org.apache.cayenne.ObjectContext interface. E.g.:
ObjectContext context = DataContext.createDataContext();
This protects your code from the actual implementation evolution, allows you to customize context behavior by using interface wrappers, and would also allow you to use lifecycle callbacks feature (although we may enable callbacks directly on the DataContext at some point). There are plans to update all Cayenne API to return ObjectContext everywhere DataContext might be returned.
(status: in progress, only selecting queries are supported)
Never mind the "EJB" in the name. EJBQL queries are a powerful object query mechanism borrowed from the JPA specification and added to Cayenne API. EJBQLQuery is a first-class citizen, just like SelectQuery.
Just like EJBQL, lifecycle callbacks is a JPA-inspired feature that allows to perform custom operations at certain points in the object lifecycle. For more details see this page.
(status: preview)
Changed DbAttribute "precision" property to "scale" (as it meant scale all along) and added a separate "precision" attribute to track precision.
Cayenne can now persist the following extra simple property types: java.util.Calendar, java.math.BigInteger, java.io.Serializable, char[], java.lang.Character, java.lang.Character[], java.lang.Byte[]. (Note that until CAY-826 is fixed, these types do not show up in the Modeler, still users can enter them directly).
Cayenne no longer has a Log4J dependency. Instead it uses Jakarta commons-logging, as described here. Note that 2.0 Log4J configurations should continue to work, although now it is a user responsibility to bootstrap Log4J - Cayenne will no longer do it for you. E.g. you can do this on startup:
org.apache.log4j.PropertyConfigurator.configure("cayenne-log.properties");