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…