as far as it concerns EJB 3.0 and Hibernate, the former is a specification (ie. how things should work)
while Hibernate is the JavaPersistenceApi realization of that specs in the form of an API. So one can use Hibernate as
the EJB 3.0 JPA provider in the realm of an EJB 3.0 capable application server.
I hope someone else has all the detail you're looking for