Java JPA ou Hibernate

Galera, quero entrar mais afundo em persistência e gostaria de saber por qual o melhor caminho, JPA ou Hibernate?
Minha aplicação eu estou utilizando Struts com banco de dados PostgreSql, agradeço com quem contribuir nesse tópico :slight_smile:

Olá!
Não sou expert não mas tenho utilizado hibernate 3.2 e não tenho tido problemas. Acho que na verdade, as annotations do JPA podem ser utilizadas com Hibernate sem problemas.

JPA é uma especificação do JAVA.
Hibernate é uma das implementações dessa especificação, na verdade a especificação surgiu depois da implementação, pois JPA é uma especificação muito próxima do que o Hibernate já fazia. Agora o Hibernate também pode ser utilizado sem ser uma implementação JPA (se vc usar os xmls para fazer os mapeamentos).

Essa explicação acima é superficial, mas o que eu quero dizer é que para usar JPA vc tem que usar na verdade uma implementação dela que pode ser o Hibernate ou mesmo o TopLink da Oracle.

Mais para usar JPA e obrigado a utilizar Hibernate junto?

Como falei acima o JPA é a especificação (como deve funcionar usando um termo grosseiro) e o Hibernate é a “codificação” vamos dizer assim, logo para você usar JPA tem que ser por intermedio do Hibernate. Mas pode ser outra implementação como a TopLink.

blz, e alguém conhece um tutorial ou exemplo na net que fale sobre o assunto

Qual assunto? JPA ou Hibernate???

http://www.google.com.br/search?q=tutorial+hibernate+e+jpa&btnG=Pesquisar&hl=pt-BR&sa=2

Cara, aconselho a usar JPA que é a especificação. Além disso esse Framework possui algumas vantagens perante o Hibernate, como a possibilidade de se realizar Querys Nativas, aumentando a performance das suas operações.

notei que no netbeans tem umas classes prontas sobre persistencia que seria JPA será que vale a pena usar?

Pelo que eu sei a JPA é uma especificação, me corrijam se eu estiver errado.
Onde você deve usar um framework que a implemente.
Ex: Hibernate ou Toplink.
Como o hibernate vêm por padrão no JBoss, ao usar JPA fica transparente esse uso.
Mas deve ser declarado no persistence.xml qual o provider você irá usar.
Exemplo de persistence.xml

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
             version="1.0">
   <persistence-unit name="bookingDatabase">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:/bookingDatasource</jta-data-source>
      <properties>
         <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
         <property name="hibernate.show_sql" value="true"/>
         <!-- These are the default for JBoss EJB3, but not for HEM: -->
         <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
         <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
      </properties>
   </persistence-unit>
</persistence>

JPA é uma especificação ou framework??? Leia ai o que você escreveu…JPA é uma especificação, logo para você utilizar tem que ser através de uma implementação dela que no caso pode ser o Hibernate, TopLink ou outro que achar.

Se quiser fazer um teste rápido com JPA pode usar o JBoss Seam com Seam-gen que gera um projeto pronto para rodar, utilizando JPA com hibernate.

onde vc achou classe pronta no NetBeans?? o que vc pode é utilizar os wizards do NetBeans para conectar no BD e ele fazer uma engenharia-reversa e transformar suas tabelas em Beans, mas isso só é recomendável se seu modelo for exatamente igual ao seu modelo ER que acredito que não seja.

blz, entendi, valeu galera pela ajuda

Não necessariamente. Você pode usar o JPA com qualquer provider, geralmente os da Hibernate ou TopLink (Oracle).

Bom quanto à sua questão sobre o que vale a pena aprender eu acho que aprender JPA agora é necessário sim, pois é uma tecnologia emergente que eu acho que tem muito futuro.
Porém acho necessário também aprender a usar o Hibernate por sí só, sem os anotations, hoje a maioria das empresas ainda usam hibernate em sistemas que já haviam sido construidos antes do surgimento do jpa e provavelmente vc terá que dar manutenção em um desses.

:thumbup:

Acho que pode te ajudar http://code.google.com/p/jpa-component/wiki/Doc_PT_Br