[quote=iamthelegend][quote=drsmachado][quote=iamthelegend]Olá a todos,
Estou iniciando no Hibernate e estou com dúvidas quanto ao funcionamento de consultas especificamente 1:N e N:N.
Vi em vários lugares o uso de “annotations”, em outros o “Criteria” e em outros somente o HQL.
Minha dúvida: é realmente obrigatório o uso de annotations para conseguir realizar este tipo de consulta?
Se alguém puder me dizer qual é a boa prática e também o uso de um exemplo simples, de preferencia usando somente o HQL.
Grato.[/quote]
A idéia é usar a estrutura de classes e seus atributos e relacionamentos em uma forma de criar um panorama que permita o funcionamento de um banco de dados, fidedigno ao que o sistema necessita.
Desta forma, você deveria ter alguma maneira de dizer que a classe A e a classe B se relacionam em uma multiplicidade 1 : N, já B e C possuem multiplicidade de relacionamento N : N bidirecional. Isso significa que você deveria mapear estes relacionamentos de alguma forma, seja usando annotations, XML ou programaticamente.
A forma de consulta através de Criteria se beneficia destes mapeamentos. HQL te dá mais liberdade, porém, dependendo da consulta, você terá como retorno uma Collection<Object[]> e precisará proceder com as devidas ações para obter os valores que precisa.
[/quote]
Obrigado a todos pelas respostas.
Vou ignorar assuntos não relacionados ao tópico…
Eu realmente percebi essa idéia; é como se o hibernate fizesse as duas coisas:
1)Criar seu banco de dados através das suas classes obedecendo o Annotations
ou
2)Criar suas classes XML e JAVA obedecendo a estrutura do seu banco de dados, nesse caso ele não usa o Annotations (pelo menos até onde eu sei).
E ainda você pode mesclar o uso dos dois…
Estou certo aqui?
Eu segui um tutorial que usa o Wizard do netbeans. Percebi um enorme ganho de tempo. O Wizard gerá o cfg do hibernate, cria os mapeamentos, gera as classes em java e em xml baseado nas entidades e nos relacionamentos do banco de dados.
Ele não usa annotations em lugar nenhum, ele usa sim o XML para especificar onde os relacionamentos acontecem.
<hibernate-mapping>
<class name="entidade.Pessoa" table="pessoa" catalog="xserv">
<id name="idpessoa" type="java.lang.Integer">
<column name="idpessoa" />
<generator class="identity" />
</id>
<property ...
...
<set name="telefones" inverse="true">
<key>
<column name="idpessoa" not-null="true" />
</key>
<one-to-many class="entidade.Telefone" />
</set>
Portanto, posso então prosseguir e continuar pesquisando como fazer consultas sem usar o annotations? Pois você disse que não é obrigatório…
Se tiver um exemplo simples ou me indicar outra solução…
Grato.[/quote]
Cuidado com o wizard do netbeans, algumas vezes ele atrapalha, mais que ajuda.