That is a tough question for anyone to answer impartially.
EclipseLink is the JPA 2.0 reference implementation, is the JPA implementation for Oracle WebLogic and Glassfish, and seems to have the largest user base next to Hibernate.
EclipseLink implements all of JPA 2.0, and also has a lot of extended functionality including:
- Caching, clustered cache coordination, cache invalidation, non-Id cache indexes, in-memory querying, database event driven invalidation
- MySQL, PostgreSQL, Derby, DB2, Sybase, SQL Server, H2, HSQL, Firebird, MaxDB, Symfoware
- NoSQL, MongoDB, Oracle NoSQL, XML files
- Oracle XDB, spatial, timestamp, QCN/DCN, flashback, VPD, AQ
- Data partitioning, multi-database sharding
- Composite persistence units, multi-database integration
- Multi-tenancy
- History, object versioning, historical querying
- Stored procedures, PL/SQL
- Dynamic models, extensions, external meta-data
- Performance, caching, query caching, batch fetching, join fetching, batch writing, fetch groups
- Connection pooling
- Object-relational Struct and Array data-types
See,
http://en.wikibooks.org/wiki/Java_Persistence/Persistence_Products