Нет явных победителей при выборе веб-фреймворка. У каждой упомянутой вами платформы есть свои преимущества и недостатки (стоимость оборудования, профессиональная поддержка, поддержка сообщества и т. Д.). В зависимости от вашего расписания, требований проекта и доступных аппаратных ресурсов вам, вероятно, потребуются разные ответы. Лично я бы начал ваше исследование с платформы, на которой вы и ваша команда обладаете наибольшим опытом.
Как и многие другие постеры, я могу говорить только о том, что я сейчас активно использую, и в моем случае это Java. Если кажется, что Java соответствует требованиям вашего проекта, вы, вероятно, захотите использовать одну из более новых платформ с активным сообществом. В настоящее время Spring Web MVC, Struts2 и Stripes кажутся довольно популярными. Эти структуры в основном, если не полностью, независимы от уровня персистентности, но все они хорошо интегрируются с такими технологиями, как hibernate и jpa; хотя вы должны сделать большинство, если не все, проводки самостоятельно.
Если вы хотите пойти по пути Java, есть также готовые стеки приложений, которые позаботятся о большинстве проблем с подключением. Например, вы можете посмотреть на AppFuse Мэтта Райбла. Он создал расширяемое стартовое приложение со многими комбинациями популярных технологий Java.
Если вы заинтересованы в JVM как в платформе, вы также можете рассмотреть готовые решения для стеков, такие как Grails, или инструменты, которые помогут вам быстро построить свой стек, например Spring Roo.
Почти все решения с полным стеком, которые я видел, допускают интеграцию с устаревшей схемой базы данных. Пока ваша база данных хорошо спроектирована, вы сможете отображать свои таблицы. Упоминание о составных ключах пугает меня, но в зависимости от вашей технологии сохранения это может быть или не быть проблемой. Hibernate в Java / .NET поддерживает сопоставление с составными ключами, как и GORM в Grails (построено на Hibernate). Практически во всех случаях эти сопоставления не приветствуются, но люди, которые создают постоянные структуры, знают, что вы не всегда можете выжечь землю и полностью воссоздать вашу модель.