JPA HIBERNATE e muitas dúvidas [RESOLVIDO]

Oi pessoal, venho aqui recorrer a vocês porque achei muitas definições e explicações mas mesmo assim não consegui a resposta. Estava fazendo os exemplos do livro JPA E JSF da casa do código. Montei um projeto web, configurei o glassfish para o pool de conexões com o mysql e até aí tudo bem. Criei a classe e coloquei as anotações e criei (na mão, como fazia o livro) o persistence.xml. Mandava rodar e nada… Toda hora eu recebia erro de “No Persistence provider for EntityManager named default”. Solucionei isso adicionando a biblioteca HIBERNATE JPA.

Por que funcionou?
Eu estava usando jpa, e não hibernate.

Pesquisei em um dos tópicos aqui do guj e achei isso:

  • JPA é a especificação (Java Persistence API)
  • Hibernate é uma implementação da JPA

Não dá para desenvolver uma aplicação web só com jpa?

Sim e não.
JPA é uma especificação, assim como JSF.
JPA, assim como JSF, possuem implementações. Hibernate, embora seja anterior à primeira especificação JPA, adotou os padrões, por isso você pode criar um EntityManager e usar o persistence.xml.
Como o JSF não possui apenas o mojarra como implementação (temos o primefaces, o richfaces e outros), o Hibernate não é a única implementação (chamada provider) de JPA. Um dos mais legais é o EclipseLink.
Salvo por pequenas alterações no próprio persistence.xml e a adição dos jars do EclipseLink, você quase não tem mudanças na estrutura do projeto que vier a desenvolver.

Melhor explicação impossível cara! Obrigadão drsmachado!
Vou marcar como resolvido!
Abração galera!