These interfaces are fully intended to be exposed to application code.

JPA

The JPA interfaces are all defined by the JPA specification. For details see javax.persistence

Extensions

Hibernate defines a number of interfaces that are completely intended to be extendable by application programmers and/or
integrators. Listed below is a (not necessarily exhaustive) list of the most commonly utilized extension points:

Certainly Dialect could fit in here as well, though we chose to list it under extensions since application
developers tend to provide extended dialects rather frequently for various reasons.
Another SPI that is not yet exposed but is planned for such is the bytecode provider SPI. See org.hibernate.bytecode
for details.
Complete Hibernate documentation may be found online at http://docs.jboss.org/hibernate/.