Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, pesquisei no Google e no próprio fórum mas não entendi a relação entre Hibernate , Hibernate Annotations , Hibernate EntityManager e JPA como diz aqui : Setup do JPA
Há alguém que pudesse me explicar sem simplesmente traduzir o texto que lá está ??
Gostei da explicação. Obrigado! Mas ficaram algumas dúvidas:
(1) Então, usando-se JPA preciso apenas anotar a classe com @Entity e não preciso criar um AlgumaCoisa.hbm.xml ? Só preciso criar um .cfg.xml e criar claro a Session no código e realizar o CRUD ?
(2) O EntityManager que citaste é o @Entity ?
Obrigado!
1) Exato! Precisa apenas do hibernate.cfg.xml.
2) Não, @Entity é apenas uma anotação. A API hibernate entity manager contém uma classe chamada EntityManager, que te possibilita entre outras coisas fazer isso:
entityManager.persist(entidade);
E qual a diferença entre isto
>
entityManager.persist(entidade);
e usar session.save ?
Como havia dito anteriormente, EntityManager está relacionado a um contexto de persistência. Na prática, o EntityManager gerenciará as entidades do contexto controlando o ciclo de vida delas. Para todas as entidades que tenham o mesmo identificador haverá apenas uma instância; implementação de cache etc. Trata-se de um melhor aproveitamento de recursos. Para o banco de dados, não fará a menor diferença (salvo as peculiaridades de cada um). Os benefícios são a nível de aplicação. No final das contas os dois vão inserir um valor numa tabela da base de dados.
Então, voltando ao ponto do Hibernate, ele veio antes da especificação JPA, e depois que ela se firmou, adequou-se e passou a implementá-la ?
Obrigado!
Primeiro seria bom você saber o que o hibernate realmente faz. http://pt.wikipedia.org/wiki/Hibernate
Segundo, seria bom você saber o que são anotações. http://pt.wikipedia.org/wiki/Annotation_%28java%29
Uma vez sabendo o que o hibernate faz, é fácil entender o que faz a api hibernate-annotations. Antigamente o hibernate fazia uso de arquivos xml para o mapeamento de uma entidade. Dessa forma, você tinha um arquivo .java com a declaração da classe de entidade (Usuario.java) e um arquivo xml de mapeamento da entidade (Usuario.hbm.xml). No arquivo de mapeamento tinha todas as informações necessárias (metadados) da entidade e suas relações. A partir do Java 5 surgiram as anotações e as versões contemporâneas do hibernate deixaram de trabalhar com mapeamento via xml e passaram a usar anotações na própria entidade (Usuario.java): eliminando assim o uso de arquivo xml pra cada entidade.
O JPA - Java Persistence API, é um framework para se trabalhar com persistência de entidades. O hibernate por si só (hibernate core) já fornece mecanismos para se salvar, excluir e consultar entidades no banco de dados, entretanto a implementação JPA do hibernate fornece uma implementação de EntityManager. Que nada mais é que um conjunto de classes que disponibilizam uma interface para manipulação de uma entidade (salvar, excluir, consultar etc). No entanto, o EntityManager está relacionado a um contexto de persistência. Na prática, o EntityManager gerenciará as entidades do contexto. Para todas as entidades que tenham o mesmo identificador haverá apenas uma instância; implementação de cache etc. Trocando em miúdos, otimizará o processo de acesso a dados.
Bem, a grosso modo é isso. Espero que tenha ajudado.