Hi James,
The Java Persistence API is an API for which there are many implementations. A particular
implementation of JPA is referred to as a persistence provider.Toplink and Hibernate each
fully implement JPA so they can each be used as a persistence provider.Of course, Hibernate
also defines its own proprietary API, but that is typically not used if you are writing a JPA application.
Each Java EE 5 implementation has a default persistence provider.For the Java EE 5 SDK, the
default is toplink. For JBoss, it's Hibernate.It's also possible to "plug in" a different persistence
provider into any Java EE 5 implementation.
Like all cases where there are multiple implementations of the same API, there are differences
between them.Performance is often one such area.In addition, persistence providers differ
in their support for some of the optional features defined by the spec.
--ken