Oi pessoal, passei ontem boa parte do dia tentando entender JPA, saquei que é para ajudar na persistência, mas tem várias opções de download, ai me confundiu. tanto faz onde faço download? se eu usar o jpa do hibernate ou jboss ou eclipse e etc muda a implementação? se muda a implementação posso usar o jpa de um em outra ferramenta de persistência? estava a tentar usar com hibernate, em cima da hora vi que existe opção para o hibernate mas não era compatível com um projeto que tenho(n foi eu q fiz) como referencia, usa outros pacotes.
to perdidão, tem um monte de tutos que nem explicar direito.
JPA é apenas uma especificação. Frameworks como o Hibernate, Toplink, Open JPA, etc. são implementações dessa especificação.
Se você utilizar estritamente JPA, pode trocar essas implementações sem muitos problemas. Nesse caso, o que muda um pouco são as configurações no persistence.xml. Entretanto, algumas implementações como o Hibernate oferecem recursos além daqueles especificados pelo JPA. Se você utilizá-los, terá mais problemas na mudança de implementação.
SHOW!!!
e existe uma implementação padrão? ou uma oficial?
ou se tema a mais popular/mais usada?
site do JPA, sabe?
obrigado.
Eu diria que a implementação mais popular é o Hibernate.
Suponho também que a implementação de referência do JPA seja a mesma que vem junto com o servidor de aplicações Glassfish, mas não sei o nome.
No JEE6 a implementação de referência é o eclipselink.
estou com uma aplicação que usa struts e hibernate, juntamente com o hibernate, está em uso o JPA, mas me diseram que não é para usar o JPA do hibernate. acho que esse link: eclipselink-2.1.0.v20100614-r7608 é que leva para o que está em uso nesse projeto.
po… juntinho…
acho q é isso mesmo, justamente do link que passei acima, to certo?
o q torna ele referencia se JPA é apenas especificações?
Ué, se o Hibernate já está configurado no projeto, por que usar outro provider JPA? Usa ele mesmo!
Falaram pra você as razões de não usar o JPA do Hibernate?
n disseram.
a especificação é uma, cada ferramenta implementa essas especificações e mais o que quiserem.
a implementação em cada ferramenta são iguais(aprendeu um faz igual em qualquer outro)? ou estou exagerando? digo, os comandos podem ser os mesmo ou “é o tal do encapsulamento”, fazem a mesma coisa cada um do seu jeito(métodos e chamadas diferentes).
As implementações fazem, cada uma do seu jeito, o que a especificação manda.
As implementações podem disponibilizar outros recursos além do que a especificação exige. É o caso do Hibernate.
dá sem problema usar uma ferramenta e outro jpa ? como o hibernate + eclipselink ?
Aí não sei, nunca precisei fazer isso.
Qual sua necessidade?
leio sobre persistencia com hibernate a pouco tempo, ainda não cheguei a tanto, apenas me baseio por um exemplo que parece não ser comum, isso para entender tb as possibilidades e saber de forma mais ampla o funcionamento.
Não entendi o que você quer dizer com isso. Note que Eclipse IDE é uma coisa, Eclipselink é outra completamente diferente. A IDE você deve conhecer bem, já o Eclipselink é feito pela mesma fundação que faz a IDE, porém são projetos diferentes e um não tem nada a ver com o outro. Apenas levam um nome parecido.
Eclipselink é o antigo Toplink Essentials, que é o antigo Toplink da Oracle, ou algo assim. Na verdade a Oracle doou os fontes do Toplink para a Eclipse Fondation que o mantém hoje como Eclipselink.
JPA é apenas a especificação. Eclipselink, Hibernate, OpenJPA e outros são as implementações. Embora todos sigam a especificação, e devam ter comportamentos iguais, cada implementação pode ter uns extras a mais. O Hibernate possui além da implementação padrão uma série de extras, por exemplo, Immutable Objects.
me referia em usar o hibernate sem o JPA própio e sim um outro JPA. Perguntei a pessoa que fez o projeto ele ainda não me respondeu, o que sei é que as anotações não são baseadas no JPA do hibernate e sim de outra, ele se refere ao JPA do pacote EJB. Onde acho esse EJB? sempre que pesquiso só acho enterprise java bean e não necessariamente anotações, vi que pode-se usar anotações mas não consegui distinguir se estava no caminho certo ou não.
EJB = Enterprise Java Beans, e somente isso.
Como assim outro JPA? Só existe um JPA, que é apenas uma especificação. Voc? quer dizer usar Hibernate Standalone com suas próprias anotações sem JPA? Se sim procure no site hibernate.org.
foi mal…
quero dizer em usar o hibernate com anotações que não são as padrão do hibernate.