Pessoal, toh correndo atras de um professor ha algum tempo, nesse semestre finalmente encontrei o homem, ai o como ele tem fama da “bam bam” em java, la vou eu, um monte de duvidas sobre hibernate e o homem soh saindo pela tangente, e logo a surpresa ele não usa hibernate em aplicação desktop eles usam “SLQ nativo da vida”, e ele me disse que hibernate eh para web, segundo o raciocinio dele o abrir e fechear de SessionFactory diminiu a perfomace da aplicação em um ambiente de rede. Ueh com tanta literatura sobre hibernate e os meus amigos Bauer e King da vida não me falaram nada disso, “nadica de nada”. Obs: pronto pra levar “pancadas” rsrs.
vc não abre e fecha uma SessionFactory, e sim uma seção gerada pela session factory, eu já fiz uma aplicação desktop em java para faculdade usando hibernate, em comparação com quem usou JDBC e SQL nativo o desempenho foi o mesmo e não precisei daquele monte de inserts pra tudo e mais um pouco, se me peguei mesmo em povoar uma JTable, isso foi pra acabá, estranho que o professor “bam bam” não tenha tido interesse no hibernate. No ambiente WEB também não vi diferença de performance, pois também temos outros fatores que influenciam a velocidade da aplicação, além das sessions.
Pelo jeito o cara não conhece mesmo hibernate… e falou merda… primeiro hibernate é usado tanto pra web quanto pra desktop… posso estar enganado mas nunca ouvi em lugar nenhum que abrir e fechar SessionFactory diminue a performace da app na rede…
não vejo o pq disto e nunca ouvi falar disto… se existir alguma perda de performace ela é realmente insignificante… perto dos beneficions que vc tem com o hibernate… agora acho otimo usar o hibernate para fazer inserções e updates… fazer isto nativamente é uma m**** ja imaginou fazer um insert em uma tabela com 100 campos? com o hibernate basta vc ter o objeto entidade desta tabela e mapealos com um hbm (a diversos plugins que geram automaticamente a classe persistente e os mapeamentos com o xml (hbms)) fazer isto na mão é besteira… porem não é uma boa coisa usar hibernate para grandes consultas com hql ou criteria… em certos casos a query que ele gera não fica tão performatica como a que vc pode gerar… e alem do mais vc não tem como testar o hql em um console de seu banco de dados muito menos o criteria… outro ponto é que o hibernate gera a query nativa pela seu hql ou seu criteria… e isto sim diminue um pouco a performace… por isto minha dica é use hibernate para update e insert… mas não para consultas…
Esse cara tá vacilando, se for em Brasilia me manda MP que te falo algum prof. bom.
Outra coisa, Hibernate - meu amigo , foi a melhor coisa que inventaram para acabar com Stress do povo de TI.
Usar hibernate em Desktop, que eu possa imaginar, pode gerar dois problemas:
-
Imagina você abrindo uma aplicação (Word, Eclipse, Writer…), você quer começar a usa-la de imediato, clicou no botão e pronto. Agora, com hibernate, dependendo da extensão de configurações que você fez e o momento em que abre a SessionFactory, o hibernate vai demorar um tempo pra carregar as configurações, isso é tempo que o usuário deve ficar esperando… Se você imaginar a situação como um usuário, fica fácil de entender essa parte. Numa aplicação WEB isso não é problema, mesmo se a aplicação demorar vários minutos pra entrar no ar, é o servidor que está subindo e, teoricamente, estará subindo para ficar, não como uma aplicação Desktop que é aberta/fechada toda hora na máquina do cliente!
-
Os pacotes (JARs) que você estiver usando acrescenta MBs no seu programa, e tamanho em disco pode ser problema para o usuário. Você pode até pensar “Mas o pacote do hibernate é tão enxuto, tão lightweight!” Porém, a cada pacote que você falar isso… bom, de grão em grão, a galinha enxe o papo!
Espero ter ajudado… Ou causado mais confusão ^^
[quote=Guilherme Gomes]Usar hibernate em Desktop, que eu possa imaginar, pode gerar dois problemas:
-
Imagina você abrindo uma aplicação (Word, Eclipse, Writer…), você quer começar a usa-la de imediato, clicou no botão e pronto. Agora, com hibernate, dependendo da extensão de configurações que você fez e o momento em que abre a SessionFactory, o hibernate vai demorar um tempo pra carregar as configurações, isso é tempo que o usuário deve ficar esperando… Se você imaginar a situação como um usuário, fica fácil de entender essa parte. Numa aplicação WEB isso não é problema, mesmo se a aplicação demorar vários minutos pra entrar no ar, é o servidor que está subindo e, teoricamente, estará subindo para ficar, não como uma aplicação Desktop que é aberta/fechada toda hora na máquina do cliente!
-
Os pacotes (JARs) que você estiver usando acrescenta MBs no seu programa, e tamanho em disco pode ser problema para o usuário. Você pode até pensar “Mas o pacote do hibernate é tão enxuto, tão lightweight!” Porém, a cada pacote que você falar isso… bom, de grão em grão, a galinha enxe o papo!
Espero ter ajudado… Ou causado mais confusão ^^
[/quote]
Olá Guilherme,
Eu discordo de você por coisas simples. Vá desenvolver uma aplicação em Java usando SQL puro. Você vai quebrar os dedos várias vezes só por tentar debugar a coisa. Algum tempo perdido é valido pra economizar horas procurando erros. E sem contar que esse tipo de problema acho que dá pra resolver com arquitetura.
Quanto a isso de adicionar JARs e incrementar MB, convenhamos, tamanho em disco não é o principal problema de uma aplicação. E como eu disse, acho que isso vale pra economizar muito tempo debugando. Com algumas coisas eu concordo (eu usava Log4J, mas to vendo que é muito bom usar o logging nativo). Mas cara, vá desenvolver um desktop em SQL puro usando DAO, voce vai ver o que é que estou falando e talvez discorde do que falou acima, rsrs.
[]'s!
Sergio Figueras,
Eu já desenvolvi usando SQL puro… Sei o trampo que dá, sei inclusive os problemas que isso pode causar dependendo da equipe. O que estou falando é que esse são problemas reais. Concordo com o que você disse, são pontos positivos de se usar hibernate, mas não são os únicos pontos. Teria que ver varias outras coisas pra decidir, como:
- Prazo do projeto.
- Quem é o cliente.
- Qual a configuração da(s) máquina(s) onde a aplicação será usada.
etc…
O que você disse é válido, oferece grande vantagem em usar hibernate, mas não quer dizer que isso seja o melhor em todas as situações, se tratando de programas Desktop!
[quote=Guilherme Gomes]Sergio Figueras,
Eu já desenvolvi usando SQL puro… Sei o trampo que dá, sei inclusive os problemas que isso pode causar dependendo da equipe. O que estou falando é que esse são problemas reais. Concordo com o que você disse, são pontos positivos de se usar hibernate, mas não são os únicos pontos. Teria que ver varias outras coisas pra decidir, como:
- Prazo do projeto.
- Quem é o cliente.
- Qual a configuração da(s) máquina(s) onde a aplicação será usada.
etc…
O que você disse é válido, oferece grande vantagem em usar hibernate, mas não quer dizer que isso seja o melhor em todas as situações, se tratando de programas Desktop![/quote]
Guilherme,
Eu discordo de voce novamente (eu sou chato mesmo, rs) pelo seguinte:
- Se voce for notar, se tiver prática com o Hibernate, voce demora MUITO menos tempo configurando e aplicando-o do que escrevendo as SQL.
- Não entendi a questão de “quem é o cliente”.
- Se o programador tomar MUITO cuidado com o código, e não ficar gerando coisa desnecessária (eu ainda fico pasmo com gente gerando 300 conexoes no mesmo software ou entao criando 10000 strings na mem e deixando lá e até a galera q nao usa Threads), eu acho que a perda vai ser mínima. Tá certo que tem aqueles PCs de lojas de autopeças que são uns lixos, mas se voce falar com o dono pra ele comprar uns 10 modulos de 64mb, o cara com certeza compra (voce acha pra vender por R$10, um DIMM).
[]'s
Não vou adicionar nada, acho que os dados já são suficientes ^^
Só vou me aproveitar desse tópico pra ver se alguem pode me ajudar no meu:
Bom… eu sei que um monte de gente vai achar ruim, mas eu vou falar mesmo assim.
Eu faço faculdade em universidade federal… no caso, a UFSC.
Professor universitário EM GERAL não se dedica à graduação mesmo, e ele tá c@$@#do e andando pra novos frameworks ou novas tecnologias. Ele vai lá cuspir uma teoreba qualquer pra te vender mais uma linha do teu diploma e só.
Tem uma máxima que eu adoro:
Quando você tiver dúvidas sobre bases, teorias, procure um professor universitário… e às vezes, não o da disciplina que ensina isso, procura o cara que pesquisa essa área.
De resto, se você estuda em universidade pública, principalmente: RUN! Essa raça - generalizar é um erro, eu sei, mas até hoje ninguém me provou o contrário - é preguiçosa pra diabo.
Abraço!
[quote=leoramos]Bom… eu sei que um monte de gente vai achar ruim, mas eu vou falar mesmo assim.
Eu faço faculdade em universidade federal… no caso, a UFSC.
Professor universitário EM GERAL não se dedica à graduação mesmo, e ele tá c@$@#do e andando pra novos frameworks ou novas tecnologias. Ele vai lá cuspir uma teoreba qualquer pra te vender mais uma linha do teu diploma e só.
Tem uma máxima que eu adoro:
Quando você tiver dúvidas sobre bases, teorias, procure um professor universitário… e às vezes, não o da disciplina que ensina isso, procura o cara que pesquisa essa área.
De resto, se você estuda em universidade pública, principalmente: RUN! Essa raça - generalizar é um erro, eu sei, mas até hoje ninguém me provou o contrário - é preguiçosa pra diabo.
Abraço![/quote]
Mesma opinião. Todo mundo te ilude dizendo que faculdade é bom e vai aprender muito, no final nada. Prof. universitário é um exemplo de concurso publico errado(na maioria). O cara faz a prova, passa, e pode dar aula mal o resto da vida e faltar que ninguém tá nem ai. Mas existem variações, o meu orientador num projeto que fiz na epoca da bolsa do CNPq, prof de física, ele era o bicho. Estudava o tempo todo, ajudava todo mundo, mas pro CNPq liberar 14 mil reais pra ele comprar um computador pra umas simulações foram dois anos, e ainda vieram com as configurações antigas, rs. O sistema era preguiçoso, ele não.
Tem lugares que variam, um curso que eu conheci bem e QUASE fui fazer foi o de Engenharia aeronautica (USP), Conheci uma galera do LSI e sempre me disseram que lá é diferente, e realmente parece mas o resto… vô te contar viu.
Se tiver duvidas, o verdadeiro deus que não cobra nada e sempre vai responder as suas perguntas (até em mandarim) é o Google.
[quote=Sergio Figueras][quote=Guilherme Gomes]Sergio Figueras,
Eu já desenvolvi usando SQL puro… Sei o trampo que dá, sei inclusive os problemas que isso pode causar dependendo da equipe. O que estou falando é que esse são problemas reais. Concordo com o que você disse, são pontos positivos de se usar hibernate, mas não são os únicos pontos. Teria que ver varias outras coisas pra decidir, como:
- Prazo do projeto.
- Quem é o cliente.
- Qual a configuração da(s) máquina(s) onde a aplicação será usada.
etc…
O que você disse é válido, oferece grande vantagem em usar hibernate, mas não quer dizer que isso seja o melhor em todas as situações, se tratando de programas Desktop![/quote]
Guilherme,
Eu discordo de voce novamente (eu sou chato mesmo, rs) pelo seguinte:
- Se voce for notar, se tiver prática com o Hibernate, voce demora MUITO menos tempo configurando e aplicando-o do que escrevendo as SQL.
- Não entendi a questão de “quem é o cliente”.
- Se o programador tomar MUITO cuidado com o código, e não ficar gerando coisa desnecessária (eu ainda fico pasmo com gente gerando 300 conexoes no mesmo software ou entao criando 10000 strings na mem e deixando lá e até a galera q nao usa Threads), eu acho que a perda vai ser mínima. Tá certo que tem aqueles PCs de lojas de autopeças que são uns lixos, mas se voce falar com o dono pra ele comprar uns 10 modulos de 64mb, o cara com certeza compra (voce acha pra vender por R$10, um DIMM).
[]'s
[/quote]
Ola,
Uma das coisas que aprendi em desenvolvimento de softwares:
Uma coisa nem sempre é boa pra tudo, existe sempre um porém.
No caso de hibernate principalmente… e é sempre bom ressaltar:
->Geralmente o meio acadêmico não gosta muito do estilo:
1º->deixa que eu faço tudo pra vc, mas pra isto vc tera que aprender 100 trecos pra me configurar… depois eu magicamente faço as coisa pra vc.
2º->eu sou bom pra 80% do que vc tera que fazer… os outros 20% vc resolve do modo antigo…
3º-> eu sei fazer algumas coisas… mas pra outras vc tera que aprender uma nova coisa pra me manipular…
Saca, o meio academico gosta, e com uma certa razão… se uma coisa foi feita pra resolver o problema, que resolva o problema.
Não que eu discorde que o hibernate seja bom… mas não para tudo, como o colega acima citou, imagine fazer um projeto 100% desktop, em 2 camadas, e incluir o hibernate, o usuário na terceira vez que iniciar o programa ele desiste de usar… pois ficará algum tempo esperando as paradas se iniciarem… usando o bom e velho JDBC, não tem quase delay nenhum… claro que quando a apliacação fica num servidor, é distribuida e tals vc não se preocupa tanto com este tempo de inicialização…
Bem, sou graduado, especializado e já dei aula de java e de banco de dados em uma faculdade.
Já tive professores muito medíocres. Quando dei aula, reconheço que meu desempenho foi bem abaixo do que esperava para mim mesmo.
Já vi gente que tem título de doutor, PhD, whatthefuckelse que muitas vezes não sabe p***a nenhuma.
Na verdade existe um mito de que pessoas com graduação/especialização/mestrado/doutorado/whatever são gênios fodões, mas isso não passa de um mito. Titulação acadêmica não reflete conhecimento na área infelizmente.
Daí no fundo são pessoas. Tem gente que não sabe e reconhece isso. Tem gente que fala merda e insiste para tentar impressionar. Tem gente que gosta de sustentar mentiras e aparências. Essas características não dependem da titulação acadêmica.
Aliás, aluno é aluno em qualquer lugar. Na escola tem gente que só enrola, copia trabalho da internet e cola do colega na prova. Na faculdade tem gente que só enrola, copia trabalho da internet e cola do colega na prova. Na especialização tem gente que só enrola, copia trabalho da internet e cola do colega na prova (eu vi!). No mestrado tem gente que só enrola, copia trabalho da internet e cola do colega na prova (não vi mas sei de dois casos). E provavelmente no doutorado tem gente que só enrola, copia trabalho da internet e cola do colega na prova. Por outro lado, na escola tem gente que se esforça, estuda e aprende. Na faculdade tem gente que se esforça, estuda e aprende. Na especialização tem gente que se esforça, estuda e aprende. No mestrado tem gente que se esforça, estuda e aprende. No doutorado tem gente que se esforça, estuda e aprende.
Enfim, concluindo, isso tem mais a ver com questões de comportamento do que de conhecimento. Eu já dei aula de java em faculdade e acredito que eu domino bem essa tecnologia, mas confesso que há muita coisa importante que desconheço ou que conheço apenas superficialmente (hibernate é uma delas inclusive).
falou tudo victorwss…
Para aqueles fodões em hibernate… nunca usei hibernate para desktop para web é simples no ponto de que
vc pode fazer os mapeamentos na hora de startar o servidor… porem em desktop como faz o mesmo ao carregar a app desktop carregar junto o hibernate???
como faz este esquema???
[quote=victorwss]Bem, sou graduado, especializado e já dei aula de java e de banco de dados em uma faculdade.
Já tive professores muito medíocres. Quando dei aula, reconheço que meu desempenho foi bem abaixo do que esperava para mim mesmo.
Já vi gente que tem título de doutor, PhD, whatthefuckelse que muitas vezes não sabe p***a nenhuma.
Na verdade existe um mito de que pessoas com graduação/especialização/mestrado/doutorado/whatever são gênios fodões, mas isso não passa de um mito. Titulação acadêmica não reflete conhecimento na área infelizmente.
Daí no fundo são pessoas. Tem gente que não sabe e reconhece isso. Tem gente que fala merda e insiste para tentar impressionar. Tem gente que gosta de sustentar mentiras e aparências. Essas características não dependem da titulação acadêmica.
Aliás, aluno é aluno em qualquer lugar. Na escola tem gente que só enrola, copia trabalho da internet e cola do colega na prova. Na faculdade tem gente que só enrola, copia trabalho da internet e cola do colega na prova. Na especialização tem gente que só enrola, copia trabalho da internet e cola do colega na prova (eu vi!). No mestrado tem gente que só enrola, copia trabalho da internet e cola do colega na prova (não vi mas sei de dois casos). E provavelmente no doutorado tem gente que só enrola, copia trabalho da internet e cola do colega na prova. Por outro lado, na escola tem gente que se esforça, estuda e aprende. Na faculdade tem gente que se esforça, estuda e aprende. Na especialização tem gente que se esforça, estuda e aprende. No mestrado tem gente que se esforça, estuda e aprende. No doutorado tem gente que se esforça, estuda e aprende.
Enfim, concluindo, isso tem mais a ver com questões de comportamento do que de conhecimento. Eu já dei aula de java em faculdade e acredito que eu domino bem essa tecnologia, mas confesso que há muita coisa importante que desconheço ou que conheço apenas superficialmente (hibernate é uma delas inclusive).[/quote]
Descobrimos quem está dando aulas para o josue carrecon, hehehehehe…