Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

estudante_php

Hibernate Annotations

Recommended Posts

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á ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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);

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.