Oracle's TopLink has for a while been the reference implementation for the EJB 3.0 standard, and the tool has been widely used both in development and in production environments. Oracle has donated the entire TopLink codebase to the Eclipse Foundation, and rechristened it EclipseLink. EclipseLink saw it's 1.0 release this week.
In addition to being a highly configurable EJB 3 persistence provider, EclipseLink provides many extensions to EJB 3, as well as the capability to link objects with non-relational data sources, such as files and XML. Object transformation features in EclipseLink allow multiple types of data representations to be viewed by a client as a homogeneous object model.
The main features of EclipseLink include:
Transactional persistence of Java objects to a relational database accessed using Java Database Connectivity (JDBC) drivers.
Transactional persistence of Java objects to special purpose structured data source representations optimized for storage in object-relational data type databases...
Transactional persistence of Java objects to a nonrelational data source accessed using a Java EE Connector architecture (JCA) adapter, and any supported EIS record type, including indexed, mapped, or XML.
Nontransactional, nonpersistent (in-memory) conversion between Java objects and XML Schema Document (XSD)-based XML documents using Java Architecture for XML Binding (JAXB).
In addition to being a complete implementation of an EJB 3 persistence provider, EclipseLink adds features beyond the EJB 3 implementation, such as:
Object-level cache
Distributed cache coordination
Extensive performance tuning options
Enhanced Oracle Database support;
Advanced mappings
Optimistic and pessimistic locking options
Extended annotations and query hints.
What do you think of EclipseLink's extensions to EJB?