Para usar o Criteria do Hibernate sempre vou precisar ter o arquivo class.hbm.xml referente a classe persistente ou um hibernate.cfg.xml?
Estou utilizando JPA e configuro os property no persistence.xml.
O Critéria não pertence a especificação JPA. Se você quer usar o Criteria, você não deve usar o Hibernate Entity Manager.
Portanto, esqueça o persistence.xml e trabalhe apenas com o hibernate.cfg.xml.
Sobre os hbm.xml, use o Hibernate-core para mapear as entidades através de annotations.
K
keithnak
O Critéria não pertence a especificação JPA. Se você quer usar o Criteria, você não deve usar o Hibernate Entity Manager.
Portanto, esqueça o persistence.xml e trabalhe apenas com o hibernate.cfg.xml.
Sobre os hbm.xml, use o Hibernate-core para mapear as entidades através de annotations.
Mas é negócio somente utilizar o JPA ou poderia usar também o Criteria?
Jair_Rillo_Junior
A especificação JPA não implementa o Criteria, portanto, se você quer usar Criteria, você não irá usar a especificação JPA.
Eu gosto muito do JPA quando estamos trabalhando em um ambiente JEE (usando EJB3 e cia), caso contrário, eu optaria pelo Hibernate (é o meu caso no projeto atual).
K
keithnak
Pois é Jair, na verdade estou estudando essas tecnologias pq me encarregaram de verificar isso para um projeto que vai ser feito em ambiente JEE com EJB3 (provavelmente com Glassfish já que o JBoss atual não dá suporte a algumas facilidades do EJB3), mas me passaram uma arquitetura com EJB + JPA + Hibernate + JSF.
É viável?
Jair_Rillo_Junior
quando se fala JPA + Hibernate, a idéia é usar a especificaçao JPA mas usando a implementação do Hibernate. Nesse caso você NÃO TERÁ O CRITERIA.
No GUJ já foi bastante discutido a diferença do JPA e Hibernate (core).
K
keithnak
Hum…
Agora entendi Jair.
Mas tudo o que se faz com JPA (Hibernate como provedor) é possível com Critéria e vice-versa?
Há alguma vantagem de alguma das partes?
Li em alguns blogs que a próxima spec do JPA incluirá o Criteria.
Jair_Rillo_Junior
Você usa o que a especificaçao JPA te oferece, não importa o provider (seja Hibernate, OpenJPA, Toplink).
O Criteria é algo que pertence apenas o Hibernate-core (não a especificação). Ela é usada para fazer busca ao banco de dados de uma forma mais clara.
A especificação atual da JPA não tem criteria.
Como dito anteriormente, a vantagem do criteria é que você faz buscas no banco de uma forma mais clara. O hibernate possui outras vantagens também, dê uma pesquisada no fórum que esse assunto já foi discutido