Understanding JPA implementations
The JPA specification initially evolved from the combined experiences of key ORM implementations including TopLink (from Oracle), Hibernate, and Kodo to name a few. These products revolutionized Java database interactions by abstracting the underlying SQL from the domain layer and simplifying the development effort required to implement the core CRUD operations (Create, Read, Update, and Delete). Each implementation supports the JPA standards in addition to their own proprietary APIs. TopLink, for example, provides caching enhancements that are outside of the JPA specification as well as sophisticated query optimizations for Oracle databases. The implementation that you select may depend on the requirements of your application (for example, distributed caching) and also on the underlying database itself.
The GlassFish 4 server comes bundled with the open source EclipseLink JPA implementation, and this is what we will be using in our book. More information...