Duvida mapeamento hibernate

13 respostas
pedrohms

Olá pessoal, tudo bem? Estou com uma dúvida em hibernate: Na classe e no arquivo de mapeamento posso só colocar os campos que quero que apareça ou tenho que colocar todos os campos? Por que escrever todos os campos vai ser cansativo, tipo, estou fazendo uma aplicação que as tabelas tem mais de 15 campos, algumas tem mais de 25.

13 Respostas

marcos1EM

Se n me engano vc tem que colocar todos os campos, porque os campos não colocados tem os seus dados apagados na hora de persistir.

Não tenha preguiça de mapear os campos, só para te animar aqui na empresas tem classes mapeadas que possuem mais de duzentos campos. Além disso o Netbeans tem assistentes que faciltam a criação de classes apartir da especificação de tabelas do banco, ele já monta os atributos e faz os mapeamentos, só é preciso fazer alguns pequenos ajustes depois.

pedrohms

Vlw pela resposta. É que preciso de ultilizar apenas algums campos, e na maioria das vezes eu ultiliza 2 ou mais tabelas nos selects, estou meio que sem saber como fazer isso. tenho que extender alguma classe ? Como que faço ? Se possivel alguém me mostre algum exemplo de join entre 3 tabelas ? Mais uma coisa: Ultilizo muitas VIEWS, eu teria que criar classe pras VIEWS ?

Gerson_da_S_Lima

Você não precisa mapear não todos os campos, pode mapear somente os campos que vai precisar. Agora você não vai poder alterar os campos que não mapeou. Os dados do outros campos não vai ser apagado.

Com relação aos joins, dê uma pesquisadinha no google que você encontra fácil.

As views eu não sei, nunca precisei fazer isso, mas talvez dê sim.

Agora não entendi o que você quis dizer com extender um classe pra fazer select com 2 ou mais tabelas, não fez sentido nenhum pra mim.

R

tanto no eclipse quanto no netbeans, tem pluggins que geram as classes mapeadas para vc.
Depois de geradas vc pode apenas corrigir ou melhorar algumas coisas, mas o trabalho pesado deixa por conta da IDE

C

Se estiver usando Hibernate Annotations ao invés dos XML aconselho a criar um projeto JPA no Eclipse, configurar a conexão e apontar para a base de dados, depois ele gera tudo sozinho a classe com as anotações e mapeamentos.

arthurminarini

os joins da pra fazer com hql ou criteria cabe a você escolher ja escolheu qual dos 2 vai utilizar?

marcos1EM

Se estiver usando HQL ou Criteria não precisará, na maioria dos casos, usar join pois é possível navegar entre os objetos através dos relacionamentos entre as classes.
Quanto a exemplo de joins, olhe:http://docs.jboss.org/hibernate/stable/core/reference/pt-BR/html/queryhql.html

pedrohms

Muito obrigado pela resposta pessoal. Estou comecando em hibernate se algo soou não fazer sentido, ignorem, essas respostas esclareceram bastante coisa, agora so falta pesquisar sobre a questão das views. Outra coisa que me ajudaria bastante é se eu podesse aproveitar as queries criadas aqui na empresa, tipo tem mais de 200 queries aqui ja prontas, eu gostaria muito não ter que reinventar a roda, e outra questão: Será que não seria bom eu ultilizar JDBC puro para um projeto grande? ou hibernate mesmo? Tipo, imagine uma tela onde instancie centenas de classes com dezenas de campos. PS.: se disse algo sem sentido me desculpem.

Vlw galera, fico no aguardo.

arthurminarini

vc não vai reiventar a roda e sim migrar para um ambiente multibanco e de grande escalabilidade. Use Hibernate migre as queries para HQL uma a uma e depois tera um trabalho bem feito e te dará frutos e menos trabalho futuramente e também muita tranquilidade visto que com as classes mapeadas esqueça sql e principlamente sql’s de CRUD que são muito xatas de fazer

marcos1EM

É possível sim aproveitar as suas querys, pois o Hibernate também dá suporte ao SQL nativo. Porém do meu ponto de vista não seria vantajoso fazer isso,saíria um pouco do foco do Hibernate, pois uma das grandes vantagens dele é facilidade para a montagem das consultas que pode ser feito com HQL, Alem dele já possuir métodos para salvar, alterar e exluir as entidades persistentes, dispensando tempo para montagem dessas operações padrões.
É claro que o seu uso tem um custo, como maior quantidade de memória consumida, perca de um pouco do desempenho e tal, em relação ao JDBC. Mas não é algo que vá prejudicar o funcionamnento de sua aplicação. Acho que muito poucas aplicação Web ainda utilizam apenas a conexão JDBC nativa.

R

se for simples sql’s vc pode alterar e utilizar métodos do proprio hibernate. Caso seja consultas mais especificas, procedures , views e etc melhor não alterar e continuar usando.
Hibernate vai lhe ajudar muito na hora de criar os objetos. Caso vá surgindo novas consultas , vc já utiliza com o hibernate. entendeu?
unir o útil ao agradavel rs.

arthurminarini

justamente! se for views e procedures use getSession().createSQLQuery mesmo. mas mesmo assim da pra utilizar o hibernate com procedures e views anotando-as em sua proprias classes, mas vai levar muito mais tempo e vai exigir um EntityManager mapeado por completo na JPA

pedrohms

Essas querys aqui da empresa são auteradas toda hora dinamicamente apartir do banco de dados e nome de datamodules e datasets armazenados no próprio, por isso seria util, por que as querys são específicas, e me ajudaria a seguir a mesma regra ja ultilizada nos módulos do aplicativo

Criado 17 de novembro de 2010
Ultima resposta 18 de nov. de 2010
Respostas 13
Participantes 6