Estou para iniciar a codificação de uma aplicação de tamanho médio (o MER prevê umas 100 tabelas), e a plataforma escolhida é Java.
Em princípio, será uma aplicação Desktop para ser utilizada em uma rede Local com aproximadamente 30 acessos simultâneos. Em um futuro bem próximo, terei que desenvolver algumas ferramentas Web de consulta para acesso pelo Site da empresa. Futuramente talvez migraremos 90% da aplicação para Web, restando apenas algumas funções específicas de integração com automação para terefas desktop.
Estou em dúvidas sobre o que usar. Arquitetura, Fremeworks, etc. Não tenho experiência com projetos Java, estudei Java Core, JSP e Servlets a uns oito anos e hoje fiz algumas aplicações com Swing/JDBC.
Uma coisa é certa: Swing e JDBC puros são inviáveis pela questão de produtividade muito baixa.
Então, definimos que vamos usar Hibernate para abstrair o acesso ao banco de dados.
Cara, eu faria da seguinte forma. Usaria Mvc, e deixaria meu Model ( camada de negocio ) no servidor ( tomcat, jboss, oc4j e etc ), pra isso usaria Hibernate como provedor Jpa ( Java Persistence Api ) o que torna ainda mais rápido o desenvolvimento. Fazendo isso a camada Cliente fica independe da tecnologia usada ( swing, jsp, flex e etc ) e assim na hora que vc for migrar para web o esforço é menor. Como a principio será uma aplicação desktop, passe a camada de negocio pra um tomcat da vida e depois é só acessar os serviços que estarão no server.