Hibernate, o assunto era Reinventar a roda, mas isso não tem mais importância

[quote=saoj][quote=Paulo Silveira]
Repare que o proprio site da oracle esta falando sim de writer bloquear reader.
[/quote]

Não tenho certeza, mas acho que o MySQL e outros já possuem essa característica que no passado já foi o trunfo do Oracle, afinal alguma coisa tinha que justificar pagar 100 mil reais por um software. :-)[/quote]

Tambem acho. Esses caras se copiam assim como Java e .NET se copiam.

[quote=louds]O problema de reinventar a roda é quando os frameworks existentes foram criados pensando exclusivamente no usuário final e não que serão consumidos por outros. Isso é um erro grave que até hoje ainda é uma praga no mundo Java.
[/quote]

Frameworks que são usados por outros desenvolvedores é o que dá mais trabalho, principalmente quando ele não tme outra escolha. Trabalhei com isso, fazendo o framework que seria utilizado desenvolvimento de vários outros produtos.

O Hibernate tem a facilidade de ser apenas java (tá, também tem para C#, mas com essas atualizações do VS2008 e a vinda do LINQ não sei como vai ficar) e na minha opinião as primeiras versões não foram muito bem discutidas antes da implementação, mas as versões mais recentes estão ótimas, o que mostra a evolução das pessoas e a proposta de alguns projetos Open Source.

Voltando ao tópico, "reinventar a roda" as vezes é uma necessidade, voltando ao exemplo de quando eu fazia o framework, tinha que criar bibliotecas em C (BREW), Java (J2ME) e C (SYMBIAN). assim, o mesmo código "compilava" em todas essas plataformas (era necessário trocar . -> ::, etc. mas era um avanço) e algumas coisas tinha que ser adaptadoas em cima das implementações que já existiam (do proprio SDK e dos diversos frameworks q já existiam). Se você rpecisa de algo, vai lá e faz. Não adianta cadastrar seu problema no forum do framework, escrever no JIRA porque o andar desses projetos pode não atender aos seus prazos.

[quote=Paulo Silveira][quote=saoj][quote=Paulo Silveira]
Repare que o proprio site da oracle esta falando sim de writer bloquear reader.
[/quote]

Não tenho certeza, mas acho que o MySQL e outros já possuem essa característica que no passado já foi o trunfo do Oracle, afinal alguma coisa tinha que justificar pagar 100 mil reais por um software. :-)[/quote]

Tambem acho. Esses caras se copiam assim como Java e .NET se copiam.[/quote]

Assim como a Oracle copiou o conceito de triggers da Sybase, e por aí vai.

Hoje no Oracle schema e user é a mesma coisa, já em MySQL, PostgreSQL são coisas distintas; eu acho que em breve veremos numa nova versão do Oracle essa “grande inovação” de ter isso separado. Até pouco tempo atrás nem tabela temporária tinha e até hoje coisas básicas, como por exemplo uma coluna do tipo boolean não existe e somos obrigados a usar gambiarras.

Sobre a discussão de lock, o que é interessante do Oracle é que tudo isso ele implementa internamente, vc faz um UPDATE de 10 linhas e pronto, ele já locou essas linhas para a sua sessão, somente você vê as alterações fazendo SELECT, mais ninguém. Se outra pessoa fizer um update em algumas dessas 10 linhas, a sessão dela vai esperar a sua commitar a transação ou desfazer com rollback.

O resto deste tópico tem até algum mérito mas eu discordei do que você dise com relação ao Hibernate. Este tópico não é ‘só seu’, se você não está interessado em discutir suas opiniões não as expresse em um fórum público.

AHm? Todas são linguages Orientadas a Objetos de uso eral. Todas azem a mesma coisa, de maneiras diferentes.

Ahm? Você quem falou que HQL vira SQL, então dá pra fazer tudo em SQL. Eu concordei e ainda falei que Bytecode vra código de máquina, então vamos fazer tudo em código de máquina. O que framework web tem a ver com isso?

[quote=volnei]Nossa isso é totalmente relativo, não tem como falar que não funciona… à não ser que exista algum framework pronto chamado "caseiro" eu acho que se vc implementar bem vai funcionar.
[/quote]

Pois é, eu aposto que quando você tentar vai mudar de idéia. Pense num grafo simles, um administrador <-> grupo <-> usuario. Agora faça consultar lazy-loaded que tragam todos os usuários de um grupo, pegue todos os grupos de todos estes usuários num conjunto e depois retorne todos os administradores de todos os grupos que esses usuários pertencem a.

CGLIB faz manipulação de bytecode, não lazy loading. Por favor, conheça a ferramenta antes de criticar.

Se você não tem queries polimórficas como vai ter polimorfismo? Como eu consigo uma consulta que me traga todas as instâncias da classe Usuario e de sas subclasses, segundo o modelo uma-tabela-por-classe ?

Se você não gosta disso basta criar um wrapper.

Hibernate é Java então dizer que tudo que se faz com ele se faz ‘em java’ nao faz sentido. Se você quiser reimplementar o Hibernate -ou um subset dele- em cada projeto esrevendo JDBC boa sorte.

[quote=pcalcado]

Hibernate é Java então dizer que tudo que se faz com ele se faz ‘em java’ nao faz sentido. Se você quiser reimplementar o Hibernate -ou um subset dele- em cada projeto esrevendo JDBC boa sorte.[/quote]

O caso é um pouco mais curioso, pois não usando nenhum framework de ORM não é possivel implementar persistencia em um RDBMS só (apenas) com Java, já que não tem como escapar de usar SQL com JDBC. SQL não é Java, por mais que se queira argumentar, não é. Já com Hibernate, é sim possivel implementar só com Java e nenhuma outra linguagem externa. Esse argumento contra Hibernate que com “só Java” é mais simples/facil/produtivo me faz rir pela própria falha na sua construção.

Juro que eu não entendi esse negócio de “reinventar a roda” que o Volnei anda dizendo tanto. É só uma expressão sem sentido pra dizer que determinada criação é ruim, sem usar argumentos sólidos!

O interessante é que, enquanto “reinventar a roda” tem um sentido depreciativo, a palavra “reinventar” sozinha tem um sentido positivo, de rejuvenecimento… É claro que, para o Volnei, tudo parece que é apenas “reinventar a roda”, o que é uma pena. Imagine a época em que foi criado o C para substituir a escrita em Assembly, foi uma reinvenção ou uma reinvenção da roda? E a criação do Java para substituir o C e C++? E a criação dos web frameworks para substituir a escrita direta em Servlets ou CGIs? Tudo isso foi reinvenção da roda?

Ah, mas tem aquele argumento manjado de que Java tem zilhões de frameworks, todos fazendo coisas parecidas entre eles. Mas amigo, o mundo do software livre é assim. Vários desenvolvedores criaram seus frameworks ou suas bibliotecas acreditando ter ideias interessantes pra comunidade. E não dá pra barrá-los dizendo: “Desculpe cara, não dá! Um outro framework faz exatamente o que você faz.”. Fosse assim e a liberdade iria pro saco! A comunidade acaba fazendo suas escolhas, claro! Mas ninguém é obrigado a segui-las se achar que fazendo diferente dos demais, vai fazer melhor.

Mesmo não concordando com a FORMA que o volnei demonstra seus argumentos, acredito que algumas pessoas estão aparentemente destorcendo seu post, o que ele parece querer é verificar se a desculpa de “reinventar a roda” não seria algo prejudicial, acabando por não permitir que ideias mais simples da mesma coisa possam surgir. No quisito “exemplo” do post é que o volnei pecou, foi falar logo do Hibernate!!! :smiley:

[quote=louds]
O caso é um pouco mais curioso, pois não usando nenhum framework de ORM não é possivel implementar persistencia em um RDBMS só (apenas) com Java, já que não tem como escapar de usar SQL com JDBC. SQL não é Java, por mais que se queira argumentar, não é. Já com Hibernate, é sim possivel implementar só com Java e nenhuma outra linguagem externa. Esse argumento contra Hibernate que com “só Java” é mais simples/facil/produtivo me faz rir pela própria falha na sua construção.[/quote]
HQL é java? Qual JSR??

Acho que você não leu tudo até aqui, mas quando me refiro a só java quero dizer algo que implementa alguma especificação, no caso JDBC e vc entendeu isso. Ninguem aqui é contra o hibernate, o tópico só foi criado para que pudessemos discutir sobre a abstração de uma determinada complexidade e como ela é entregue ao desenvolvedor tanto no hibernate como em qualquer outro framework.

Certo, o tópico não é só meu mas eu acho que seria no mínimo respeitoso manter o assunto com o qual ele foi iniciado e você moderador?? oq acha??

O objetivo do java é na minha concepção ser uma linguagem altamente portável o que a torna diferente do c# por exemplo WORA…

Você entendeu sim, quando você foi irônico no seu comentário que era possivel fazer tudo em assembly e realmente é, eu apenas disse que tambem é possivel usar uma quantidade escumunal de frameworks e em ambos oque tem que prevalecer é o bom senso, mas honestamente se não são capazes de seguir o assunto de um tópico nao posso exigir muito disso neh??

OK, todos tem direito de se expressar, mas se eu não mudar de idéia? Se você não tem capacidade para abstrair oque falou continua usando hibernate, mas não menospreze os outros.

E o hibernate o usa para fazer o lazy loading, ou seja dá na mesma!

Nossa a única forma de fazer isso é assim??? Você é que precisa conhecer um pouco mais de programação.

Ou criar um framework em cima desse?? Nossa vocês estão parecendo doentes ao falar do hibernate…

Não estou questinando o hibernate dá um pesquisada no tópico quantas vezes eu disse isso e vai ver, estou apenas questionando a forma que o desenvolvedor recebe ele, ou seja o que tem que ser by hand é realmente simples.

PCalcado, eu sinceramente encerro a discussão sobre qualquer assunto relacionado a hibernate aqui, eu repeti várias vezes que o objetivo não era esse e sequer tenho conhecimento para discutir isso a fundo. Só vou te dizer uma coisa, seus comentários são pejorativos e sinceramente não é postura de alguem que está a frente de uma comunidade, cuidado com isso. Se quiser responder a isso fique a vontade eu sequer vou me dar o trabalho de ler.

[quote=Leonardo3001]Juro que eu não entendi esse negócio de “reinventar a roda” que o Volnei anda dizendo tanto. É só uma expressão sem sentido pra dizer que determinada criação é ruim, sem usar argumentos sólidos!
[/quote]
Não essa é a expressão mais utilizada quando alguem quer te dizer que não precisa pensar mais nisso, alguem já pensou ou seja, continua sempre da mesma forma.

Nossa você não leu mesmo o tópico, sugiro uma leitura antes de tecer seus comentários.
Primeiro pelo fato de avaliar a expressão “reinventar a roda” e não a palavra reinventar ok?? voce sabe o significado disso não é???

É claro que, para o Volnei, tudo parece que é apenas “reinventar a roda”

Acho que está me confundindo… mais uma vez, leia o tópico antes e se ver que errou tenha coragem de criticar a pessoa certa.

[quote=Leonardo3001]
Ah, mas tem aquele argumento manjado de que Java tem zilhões de frameworks, todos fazendo coisas parecidas entre eles. Mas amigo, o mundo do software livre é assim. Vários desenvolvedores criaram seus frameworks ou suas bibliotecas acreditando ter ideias interessantes pra comunidade. E não dá pra barrá-los dizendo: “Desculpe cara, não dá! Um outro framework faz exatamente o que você faz.”. Fosse assim e a liberdade iria pro saco! A comunidade acaba fazendo suas escolhas, claro! Mas ninguém é obrigado a segui-las se achar que fazendo diferente dos demais, vai fazer melhor.[/quote]
Mas uma vez, se você ler o tópico vai ver que eu estou defendendo essa idéia, a de criar e criar e criar… o fato de já haver algo pronto não significa que não se pode criar algo melhor, pelo menos no meu ponto de vista.

Olha, pessoal não me levem a mal, mas tenho que desabafar.

  1. Se vocês não entenderam o tópico, diga apenas não entendi antes de tirar conclusões precipitadas.
  2. Jamais menospreze alguem que você sequer conhece.
  3. Leia sempre o tópico inteiro antes de entrar e criticar a pessoa que tem menos mensagens no fórum.
  4. Incentivar ou desestimular pode ser confundido quando se usa determinados termos.
  5. A melhor maneira de discordar de alguem é expondo e não impondo e sempre com respeito.
  6. Esse tópico não tinha intenção de discutir sobre hibernate.

PCalcado, não isso não serve só para você mas honestamente, esperava um pouco mais de um dos líderes de uma comunidade tão importante.

Encerro minha participação neste tópico sem sequer ter discutido o que eu havia proposto, por conta de alguns fanáticos o assunto do tópico foi totalmente desfigurado ao longo das ofensas e tentativas de se retornar ao assunto em pauta. Talvez eu tenha me expressado mal em alguns momentos e confesso que esse não é o meu forte, mas tenho certeza que não faltou empenho em tentar explicar.

Se alguem se sentiu ofendido aqui, peço desde já minhas desculpas.

Um abraço a todos.

Talvez seja você que não sabe respeitar a opinião dos outros. Lembre-se:

  1. o tópico não é seu;
  2. o fato de abri-lo não lhe dá direito de ter poderes sobre os outros;
  3. o Calçado é irônico sim, mas suas argumentações (a do Calçado, não a de você, Volnei!) são consistentes e não ficam mudando ao sabor da discussão;
  4. eu li todo o tópico sim, afirmar o contrário não é justificativa para invalidar minhas argumentações;
  5. não tenho pena de pessoas que se fazem de vítima.

Passar bem.

[quote=Leonardo3001]Talvez seja você que não sabe respeitar a opinião dos outros. Lembre-se:

  1. o tópico não é seu;
  2. o fato de abri-lo não lhe dá direito de ter poderes sobre os outros;
  3. o Calçado é irônico sim, mas suas argumentações (a do Calçado, não a de você, Volnei!) são consistentes e não ficam mudando ao sabor da discussão;
  4. eu li todo o tópico sim, afirmar o contrário não é justificativa para invalidar minhas argumentações;
  5. não tenho pena de pessoas que se fazem de vítima.

Passar bem.[/quote]

Respeitar a opinião dos outros?? Leia suas mensagens… afff

Obrigado, mas isso não muda em nada…

  1. Desde quando meu nome está como autor eu acho que ele é meu, direitos autorais?? conhece??
  2. Eu reinvindiquei poderes tambem nesse tópico?? Onde?? Você tá vendo demais ou de menos…
  3. É segurança dele? Me diga onde o pcalcado disse algo referente ao tópico que foi consistente?
  4. Se tivesse lido não tinha dito tanta besteira, ou tinha? Se disse que eu estou errado está tendo inconsistencias e se disse que os que tem opinião diferente da minha estão certos segue inconsistente…
  5. Eu tenho pena de você.

Acho que o louds se referia a poder usar anotações (Java) para mapeamento e Criteria API (Java) para realizar consultas. Bom, só com JDBC não tem como escrever apenas código Java, tem?

Mas entendi o ponto do tópico. Minha opinião: tenha bom senso - e bons argumentos - para decidir usar ou não algum framework/abstração.

valeuz…

[quote=volnei]…
HQL é java? Qual JSR??
… [/quote]
http://java.sun.com/javaee/5/docs/tutorial/doc/bnbtg.html

JSRs:
317: JPA 2.0 -> http://jcp.org/en/jsr/detail?id=317 ( podemos contar a HQL aqui! )

[quote=Java Persistence API 2.0]Section 2: Request

2.1 Please describe the proposed Specification:

The Java Persistence API is the Java API for the management of persistence and object/relational mapping for Java EE and Java SE environments.

The purpose of the Java Persistence 2.0 specification is to augment the Java Persistence API to include further features requested by the community, including additional object/relational mapping functionality and query language capabilities, a criteria-based query API, and standardization of features currently designated as optional, and to align it with related JSRs that are currently in-process and/on in-plan for the Java EE 6 timeframe.

Aspects that should be considered by the Expert Group for inclusion in this work include, but are not limited to, the following:

* Expanded object/relational mapping functionality, including greater flexibility in combining existing mapping options, support for collections of embedded objects, multiple levels of embedded objects, ordered lists, combinations of access types, etc.
[b]* Additions to the Java Persistence query language[/b]
[b]* An API for &quot;criteria&quot; queries[/b]
* Standardization of sets of &quot;hints&quot; for query configuration and for entity manager configuration
* Standardization of additional metadata to support DDL generation and &quot;Java2DB&quot; mapping
* Expanded pluggability contracts to support efficient passivation and replication of extended persistence contexts in Java EE environments
* Standardization of additional contracts for entity detachment and merge, and persistence context management
* Support for validation

The goal of the Expert Group will be to investigate these issues and identify and pursue directions for enhancement for the overall programming model and facilities of the Java Persistence API.
[/quote]

Até!

[quote=jack_-_ganzha]
Mas entendi o ponto do tópico. Minha opinião: tenha bom senso - e bons argumentos - para decidir usar ou não algum framework/abstração.

valeuz…[/quote]

Ladrão de resposta. :wink:

Volnei, seu problema que você iniciou um tópico com um assunto de curso de redação “Gostaria de discutir a influencia do voo dos patos na programação de sistemas de grande porte sobre a ótica da fase azul do Picasso”. Reinventar a roda é sadio e importante, faz parte do processo evolutivo, devemos abraçá-la e apreciar o Darwinismo envolvido. Fazemos isso a vida toda ou você pulou a etapa de andar e foi direto para levitação?

Acho que o louds se referia a poder usar anotações (Java) para mapeamento e Criteria API (Java) para realizar consultas. Bom, só com JDBC não tem como escrever apenas código Java, tem?

Mas entendi o ponto do tópico. Minha opinião: tenha bom senso - e bons argumentos - para decidir usar ou não algum framework/abstração.

valeuz…[/quote]

Olá, sim ele tem razão mas não era sobre isso a discussão. Como eu disse eu nem tenho conhecimento suficiente de hibernate para falar sobre a idéia da discussão tinha outro sentido, mas o fanatismo fala mais alto.

[quote=louds][quote=jack_-_ganzha]
Mas entendi o ponto do tópico. Minha opinião: tenha bom senso - e bons argumentos - para decidir usar ou não algum framework/abstração.

valeuz…[/quote]

Ladrão de resposta. :wink:

Volnei, seu problema que você iniciou um tópico com um assunto de curso de redação “Gostaria de discutir a influencia do voo dos patos na programação de sistemas de grande porte sobre a ótica da fase azul do Picasso”. Reinventar a roda é sadio e importante, faz parte do processo evolutivo, devemos abraçá-la e apreciar o Darwinismo envolvido. Fazemos isso a vida toda ou você pulou a etapa de andar e foi direto para levitação?

[/quote]

Se esse assunto fosse tema de redação então vocês todos estariam reprovados pois fugiram o tema.
Mas a idéia era discutir até que ponto oque temos hoje pode ser melhorado, mas quase tudo que eu falei aqui foi distorcido e eu não to entendendo o porque disso. Se eu citei o exemplo do hibernate é pq ele é o mais famoso dos frameworks e tambem citei struts mas ninguem falou nada. Acho que tinha tudo pra ser mais uma boa discussão envolvendo talvez até idéias para melhoria doque temos mas o fanatismo por alguns frameworks é que predominou. Por diversas vezes eu tentei voltar ao assunto inicial mas parece que quando se fala em framework só se pensa em hibernate, quando se fala em melhorar as coisas o assunto acaba do hibernate, seria então o hibernate uma ferramenta que não pode ser melhorada ou o contrário disso?

Sempre achei que o pessoal aqui era bem disposto a discutir idéias, mas com tantas argumentações irônicas me decepcionei bastante.

[quote=saoj][quote=emerleite ]
Por que não querer aprender/usar o hibernate ?
[/quote]

Boa pergunta. Não sei a resposta. Porque não querer aprender Hibernate, Spring, iBatis, Mentawai, VRaptor, Struts, Tapestry, etc.

Não tenho dúvida de que quanto mais vc sabe melhor é. Problema é que o tempo é escasso e cada pessoa está num determinado nível técnico. Existem pessoas que começaram a programa em Java agora, outras que programam a uma década. Outros que conhecem SQL, outros que nunca viram SQL. E por aí vai…

O problema é que o mundo Java abusou dessa sua pergunta e criou-se a salada de frameworks. Para fazer uma aplicação web java era muito simples, bastava usar Struts, JSTL, Hibernate, C3P0, Commons Validation, Spring, Commons Email, Commons File Upload, JAAS, Tiles, Log4J, OSCache, etc. Por que não saber usar e integrar esses frameworks? Isso não colabora nem um pouco para a simplicidade e a produtividade, principalmente dos menos experientes.[/quote]
Duas coisas importantes:
1 - Conhecimento sobre Hibernate hoje em dia é quase que mandatório, pois não existe nada com o mesmo propósito que chege nem perto.
2 - É melhor ter muitas opções do que apenas uma. Nunca vi algo que seja adequado a todas as situações.

É certo que no seu caso, como você trabalha direto com o Mentawai e Mentabean, você não precisa neste momento de conhecimentos de Hibernate, mas suponhamos que seu framework não existisse? Você acha mesmo que ia conseguir se manter no mercado sem utilizar Hibernate?

Hoje em dia ainda existem empresas que deveriam aproveitar o uso desta ferramenta e não utilizam por filosofias conservadoras ou algo do tipo, mas são lugares que eu não recomendo alguém buscar uma oportunidade.

Pra quem é do Rio de Janeiro e quiser ver o básico haverá uma palestra ministrada pelo Paulo Silveira na próxima terça-feira no RIOJUG. Existe outro tópico anunciando.

http://www.guj.com.br/posts/list/79723.java