Hibernate - Core, Entity Manager, Annotations

Pessoal,

O Hibernate ao se adequar a especificacao Java EE acabou deixando sua gama de produtos um pouco confusa, entao por favor poderiam me esclarecer a respeito dos 3 produtos relacionados a persistencia? Colocarei o que tenho em mente a respeito, me corrijam por favor onde estiver errado.

Hibernate-Core
Como o proprio nome diz, nucleo do hibernate PURO. Eh possivel utilizar apenas ele (que eh independente da JPA) como ORM - sem annotations (ORM via XML para cada classe) nem entitymanager (utilizando o session). Correto?

Hibernate Annotations
Utilizando esse " plus" voce pode mapear suas classes com as anotacoes especificadas na JPA, evitando o XML hell. Nada alem dessa facilidade.

Hibernate Entity Manager
Aqui eh a implementacao do Entity Manager da JPA pelo hibernate.

Em suma: utilizando os 3, posso fazer uma mistureba total e completa (claro que nao se deve, apenas pra saber) utilizando entity manager, sessions, xml, anotacoes… A questao eh pq o hibernate mantem essa bagunca, pq ele ainda mantem a vertente nao-JPA?

Em um projeto JPA com hibernate, anotariamos as classes-entidade com o Annotations, gerenciariamos as mesmas com o entity manager e o Core seria apenas a implementacao dos demais recursos, sem a utilizacao das classes especificas do hibernate. APenas recursos como HQL, Criteria - esses, extras - que poderiam ser utilizados do core explicitamente.

Entao senhores?

Obrigado desde ja!

O hibernate core é o jar padrão

o annotations, vem o padrão e uns a mais pra vc usar com annotations

e o entity manager vem as coisas pra o JPA

mas se eu não me engano o core já vem com o entity manager e o jars do annotations

No JPA vc não pode usar Critéria (mas no 2.0 sim)

Cara, o annotations por si so nao vem o padrao nao… pra usar o annotations tem que usar o hibernate-core tambem.

Sei que muuuuitos tem essa duvida, nem o site do hibernate explica direito.

Bom, descobri que o hibernate-entitymanager engloba o core… portanto se voce kiser o hibernate full (classico + annotations + entitymanager) basta pegar o entity manager + annotations. Esses 2 implementam a JPA.

Core = usar o hibernate puro, sem annotations nem entitymanager. Tem que usar o Session.

Core + Annotations = Alivia do uso de XMLs para mapeamento, com as jpa annotations.

Annotations + EntityManager = Hibernate classico + implementacao full da JPA.

COre + annotations + entitymanager = desnecessario visto que o entitymanager ja engloba o core.

Acho que eh isso :slight_smile: