FrameWork próprio x Frameworks disponíveis

11 respostas
A

Galera, sou bastante novato nesta área e gostaria de um auxilio de vocês sobre qual caminho seguir.

Temos um projeto bastante grande a ser desenvolvido, será uma quantidade relativamente alta (algo em torno de 300 tabelas pelo que já mapeamos).
Há bastante relacionamento entre as tabelas.
Teremos uma quantidade de acessos em torno de 1000 acessos diários.

Venho de uma empresa aonde havia um framework próprio , por isso a minha falta de conhecimento.
Já li sobre JDO, OJB, Hibernate e JDBC.
Li diversos locais que falavam que o Hibernate acaba sendo um pouco mais lento pra aplicações grandes.
Fico na dúvida também pelo fato de ter que mapear todas minha tabelas em classes no sistema.

A partir da experiencia de vocês, que caminho vocês me aconselham seguir?
Utilizo de meus conhecimentos e crio um framework proprio, ou utilizo algum framework disponível???

11 Respostas

drsmachado

andresilva_as:
Galera, sou bastante novato nesta área e gostaria de um auxilio de vocês sobre qual caminho seguir.

Temos um projeto bastante grande a ser desenvolvido, será uma quantidade relativamente alta (algo em torno de 300 tabelas pelo que já mapeamos).
Há bastante relacionamento entre as tabelas.
Teremos uma quantidade de acessos em torno de 1000 acessos diários.

Venho de uma empresa aonde havia um framework próprio , por isso a minha falta de conhecimento.
Já li sobre JDO, OJB, Hibernate e JDBC.
Li diversos locais que falavam que o Hibernate acaba sendo um pouco mais lento pra aplicações grandes.
Fico na dúvida também pelo fato de ter que mapear todas minha tabelas em classes no sistema.

A partir da experiencia de vocês, que caminho vocês me aconselham seguir?
Utilizo de meus conhecimentos e crio um framework proprio, ou utilizo algum framework disponível???


Quanto tempo levará para desenvolver e deixar o framework maduro?
Quanto tempo possui para desenvolver o projeto em questão?

Hibernate é mais lento, assim como java é mais lento que PHP e nem por isso as empresas optam por sistemas em PHP, pelo contrário, optam por Java e ASP.NET em sua maioria.
Aliás, eu trabalho atualmente em um projeto que foi desenvolvido em 2004, com mais de 800 tabelas, usando Struts 1 e Hibernate.
O sistema é extremamente rápido, mesmo sem contar com tecnologias como interceptors e filters. disponíveis em frameworks como Struts 2 e JSF 2.

Outro ponto, a empresa em questão é tua? Você garante que nunca sairá dela? Pois o mercado já consolidou frameworks como hibernate e EclipseLink, criar um novo é complicado pela necessidade contínua de capacitação para novos funcionários, enquanto que, usando JPA 2 com EclipseLink a empresa encontra profissionais aos montes.

Eu, sinceramente, não reinventaria a roda. Talvez melhoraria algumas coisas que pudessem ser gargalos.

drsmachado

Ah, fazendo o papel do saoj, se você não curte Hibernate, EclipseLink e esses frameworks, por que não tenta o Mentawai Framework? Talvez te ajude e você não precise reinventar a roda.

A

Então drsmachado, como eu disse, venho de uma empresa que tinha um framework próprio, muito bom por sinal, é por isso que não sei qual caminho seguir. To pesquisando mesmo e tentando achar qual framework seria melhor de se utilizar.

A atual empresa, pra qual estou pesquisando agora, é própria, temos em torno de 1 ano e meio pra desenvolver o sistema.

Com certeza não quero reiventar a roda, to é perdido mesmo.
Já li algumas coisas sobre o Mentawai, ele suporta aplicações grandes e pesadas?
Sobre o EclipseLink nunca tinha ouvido falar, vou pesquisar sobre ele .

Obrigado pelas dicas.

FernandoFranzini

andresilva_as:
Galera, sou bastante novato nesta área e gostaria de um auxilio de vocês sobre qual caminho seguir.

Temos um projeto bastante grande a ser desenvolvido, será uma quantidade relativamente alta (algo em torno de 300 tabelas pelo que já mapeamos).
Há bastante relacionamento entre as tabelas.
Teremos uma quantidade de acessos em torno de 1000 acessos diários.

Venho de uma empresa aonde havia um framework próprio , por isso a minha falta de conhecimento.
Já li sobre JDO, OJB, Hibernate e JDBC.
Li diversos locais que falavam que o Hibernate acaba sendo um pouco mais lento pra aplicações grandes.
Fico na dúvida também pelo fato de ter que mapear todas minha tabelas em classes no sistema.

A partir da experiencia de vocês, que caminho vocês me aconselham seguir?
Utilizo de meus conhecimentos e crio um framework proprio, ou utilizo algum framework disponível???

Alguns tópicos para se pensar…

  1. Qualquer ORM mal usado fica pesado, isso não tem nada haver com hibernate.
  2. Sera que vc, sua empresa ou sua equipe tem tempo, expertise e dinheiro para desenvolver um produto melhor que por exemplo hibernate…que tem feito isso intensamente nas ultimas décadas? Eu tenha certeza q não…
  3. 300 tabelas? kkk muito pouco…tenha aqui uns 2 mil e tudo funciona com ORM sim…tudo questão de saber usar.
  4. Muitas coisas podem se tornar gargalo de aplicações…
drsmachado

andresilva_as:
Então drsmachado, como eu disse, venho de uma empresa que tinha um framework próprio, muito bom por sinal, é por isso que não sei qual caminho seguir. To pesquisando mesmo e tentando achar qual framework seria melhor de se utilizar.

A atual empresa, pra qual estou pesquisando agora, é própria, temos em torno de 1 ano e meio pra desenvolver o sistema.

Com certeza não quero reiventar a roda, to é perdido mesmo.
Já li algumas coisas sobre o Mentawai, ele suporta aplicações grandes e pesadas?
Sobre o EclipseLink nunca tinha ouvido falar, vou pesquisar sobre ele .

Obrigado pelas dicas.


Eu não trabalho com Mentawai, mas como você disse que está disposto a criar um framework do zero, acho interessante analisar esta solução.

Não entendo essa coisa de “suporta aplicações grandes e pesadas”. Se for bem feito, da análise ao produto final, até servlet e jsp conseguem dar conta.

tnaires

1000 acessos diarios?
Hmmm, supondo que esses acessos ocorram durante as 8 horas que as pessoas trabalham, e sabendo que 8 horas tem 480 minutos, entao teremos menos de 3 acessos por minuto. Sera que isso e muito?

A quantidade de tabelas nao e um bom criterio para medir desempenho.

FernandoFranzini

tnaires:
1000 acessos diarios?
Hmmm, supondo que esses acessos ocorram durante as 8 horas que as pessoas trabalham, e sabendo que 8 horas tem 480 minutos, temos um total de 480 horas, entao teremos menos de 3 acessos por minuto. Sera que isso e muito?

A quantidade de tabelas nao e um bom criterio para medir desempenho.


A quantidade de tabelas não é critério para medir desempenho…

tnaires

Agree :thumbup:

Interessante como um simples adverbio (adverbio?) faz toda a diferenca numa frase.

A

Então pessoal, como disse, o fato de ser “lento” é o que li por ai…
Não sou contra e nem a favor de nenhum desses frameworks, só estou procurando informações com quem tem experiencia pra saber qual seria melhor de utilizar.

É quanto ao calculo

Hmmm, supondo que esses acessos ocorram durante as 8 horas que as pessoas trabalham, e sabendo que 8 horas tem 480 minutos, temos um total de 480 horas, entao teremos menos de 3 acessos por minuto. Sera que isso e muito?

Com certeza calculei errado, acho que vai mesmo dar mais de mil acessos…eheheh

Quanto a quantidade de tabelas, só pensei pelo fato de ter que mapear as mesmas em objetos. Mas acredito que se eu fizer um bom levantamento, também não precisar ficar fazendo muitos ajustes.

Valeu pelas dicas. Pelo que vi, pelo que comentaram, o Hibernate não chega a ser assim tão lento como li por ai, basta saber usar o mesmo, o que se aplica pra outras tecnologias também.
Tinha era medo de iniciar o projeto em algum deles e depois me arrepender.

drsmachado

andresilva_as:
Então pessoal, como disse, o fato de ser “lento” é o que li por ai…
Não sou contra e nem a favor de nenhum desses frameworks, só estou procurando informações com quem tem experiencia pra saber qual seria melhor de utilizar.

É quanto ao calculo

Hmmm, supondo que esses acessos ocorram durante as 8 horas que as pessoas trabalham, e sabendo que 8 horas tem 480 minutos, temos um total de 480 horas, entao teremos menos de 3 acessos por minuto. Sera que isso e muito?

Com certeza calculei errado, acho que vai mesmo dar mais de mil acessos…eheheh

Quanto a quantidade de tabelas, só pensei pelo fato de ter que mapear as mesmas em objetos. Mas acredito que se eu fizer um bom levantamento, também não precisar ficar fazendo muitos ajustes.

Valeu pelas dicas. Pelo que vi, pelo que comentaram, o Hibernate não chega a ser assim tão lento como li por ai, basta saber usar o mesmo, o que se aplica pra outras tecnologias também.
Tinha era medo de iniciar o projeto em algum deles e depois me arrepender.


Se não quer se arrepender, use hibernate < 4 (3.6.x) (se for usar hibernate). A versão 4 está muito crua e ruim ainda.
Talvez seja legal pensar em Spring também, bacana e bem legal de trabalhar.
Ou o mentawai mesmo, parece ser bem legal e produtivo.

J

Minha opnião:

Eu nunca gostei muito de frameworks que escondes as coisas triviais (que as vezes precisamos ver), então sou suspeito em falar… não vejo mal em utilizá-los mas não gosto daquilo que abstraia qualquer coisa, perdendo flexibilidade. Por exemplo, JSF (sei que não é um framework, mas como exemplo) é bem legal para algumas coisas, mas prefiro o bom HTML+CSS+Javascript onde você mesmo tendo de escrever mais coisas… esta programando algo nos moldes da internet… Claro que da para fazer tudo também em JSF… criar os próprios componentes e tags… mas eu prefiro aquele código internet que é comum também em PHP, ASP, etc
Gosto daqueles frameworks que facilitam sem perder a flexibilidade… um exemplo… DWR… escrever Ajax na mão é um saco e o DWR faz a parte suja sem perder a flexibilidade da coisa.
Já frameworks como Struts na minha opnião são terriveis… acho mais produtivo escrever até mesmo Servlets para fazer aplicações mais dinâmicas. Ele engessa demais a coisa toda.

Sem dizer que quando o framework muda demais, seu código envelhece do dia pra noite e é preciso uma tremenda refatoração!

Framework != Bibliotecas, ou seja, destas eu uso e abuso, seja JasperReports para relatórios, JFreeChart para gráficos, JCifs para autenticação NTLM, etc… neste caso não há duvidas… NÃO VALE MESMO A PENA REINVENTAR A RODA, PEQUENAS EXCESSÕES que já tive de implementar em JNI em C pois era possível fazer algo mais otimizado do que da própria VM, mas era uma coisa muito especifica.

Então eu só costumo usar frameworks em projetos pequenos e mais pontuais… senão prefiro escrever o sistema todo baseado em Pojos e Java puro… embora tenha muitas vezes mais código… eu acho que fica mais legivel, pois qualquer pessoa que conhece Java puro, consegue mexer… Gosto até mesmo de Servlets (Com Front Controller) e JSP (no caso do JSP usando JSTL e taglibs próprias para evitar os scriptlets), mas também gosto do Vraptor e do Spring MVC, mas os evito dependendo do tipo do projeto.

No caso do Hibernate e do Spring acredito que se perde pouco em flexibilidade… mas no sistema atual que trabalho fiz alguns testes de algumas coisas pesadas e o desempenho de executar procedures em JDBC foi 4 vezes superior ao uso com Hibernate… talvez fosse possível otimizar, porém se eu tiver que perder mais tempo otimizando, perco o principal que é a produtividade…
Outra coisa que não era tempo insignificante… estava falando de 4 segundos no hibernate e 1 segundo no JDBC, chegando a casos de 20 segundos no hibernate e 5 no jdbc.
Ccabamos implantando um layer de DAO e estamos fazendo tudo com procedure… o resultado é extremamente satisfatório… coisas de 20 segundos sendo feitas em 5… óbvio que nossas procedures são extremamente burras e estamos implantando as regras de negócio no Java, entretanto como elas fazem querys complexas acabou valendo a pena pois conseguiu-se uma otimização extra no banco de dados que é o SQL Server.

O sistema atende o usuário perfeitamente e a manutenção no mesmo se tornou simples e descomplicada. Eu considero objetivo atingido e não usamos framework.

Também aproveitamos os módulos em Desktop e Web e ser tudo Pojo facilitou pois tem algumas formas de build diferentes do projeto. O sistema Desktop também roda em linux e utiliza SWT onde também a performance foi bem superior ao Swing nos testes.

Já tem outros casos que utilizar Hibernate valeu a pena… utilizar Spring também…

Acho que a questão de framework tem de ser balanceada e só você que vai definir a arquitetura do sistema e objetivos que terá com o mesmo para saber melhor…
Tem a questão também dos programadores… no meu caso metade do desenvolvimento era criação de consultas complexas no banco de dados (estas que a performance foi melhor na procedure do que com hibernate) e os programadores vinham de linguagens como o VB e tinham extrema facilidade de escrever SQLs… as vezes não vale a pena ter de treinar todo o time novamente… sem dizer depois o time saber otimizar o hibernate que não foi bem nos testes…
As vezes é preciso sacrificar um pouco um design maravilhoso em pró de algo mais… seja produtividade, seja performance…

Esta é minha opnião…

Criado 26 de abril de 2012
Ultima resposta 27 de abr. de 2012
Respostas 11
Participantes 5