jep hibernate er godt. det bliver endnu bedre kombineret med spring så hvis du vil overveje hibernate så kig også på spring.
struts er meget udbredt men det lider af nogen problemer som de bla har forsøgt at løse i JSF som er en standard... hovedmanden bag struts har siddet med i EG for JSF og jsf bygger på fejl lavet i bl.a struts. JSF er dog forholdsvis nyt og nogen mener det stadig har nogen fejl(kender ikke detaljerne) ... struts skulle være ved at blive opgraderet hvor der tilføjes nogen af de fordel som findes i JSF.
min egen erfaring er at jsf er nemmere at arbejde med end struts.
et framework som har fået meget omtale og som bliver rost næsten hvergang der er tale om web frameworks er tapestry. jeg har ikke kigget på det endnu men efter hvad jeg har hørt skulle bør det indgå i dine overvejelser.
til produktion går jeg ud fra du ikke vil ud i noget så eksperimenterende som EJB3
jboss og et par andre har allerede beta implementationer af EJB3.. men meget kan nå at ændre sig. Selv om du ikke vil satse på EJB3 idag så skal det måske med i dine overvejelser. migration fra hibernate vil kunne gøres uden alt for stort besvær (det siges der ihvertfald). Gavin king, hovedmanden bag hibernate sidder i EJB3 EG og EJB3 er stærkt inspireret af bla hibernate og lidt af JDO.
JDO er også et bud på persistence. Det minder meget om Hibernate. Jeg har arbejdet med begge og JDO er nemmere at lære efter min mening.
JDO har desværre haft meget modvind af grunde der er for mange af til at komme ind på nu. Men JDO har den fordel frem for Hibernate at det er en Standard udviklet igennem JCP. JDO har en masse vendors bag sig.. 20-30 stykker efterhånden hvor nogen er OSS hvorimod Hibernate kun er den ene og der er et skift ikke lige så nemt... men Hibernate er også bakket op af Jboss så der kan du altid gå hen og købe support som du kan hos JDO vendors.
Satser du på EJB 2.1 så får du muligvis også nogen af de problemer med som de prøver at fjerne med EJB3... EJB har et ry for at være kompliceret, langsomt og en hel masse andre grimme ord ;) (læs Expert One on one J2EE Development Without EJB - Rod Johnson for detaljerne som godt nok er farvet af at rod er en af bagmændene af Spring som går ind for "Lightweight" frem for EJB "heavyweight" )
med hibernate,jdo,spring,struts,tapestry kan du også nøjes med en servlet container hvor du med ejb har brug for en fuld application server.
spring har et stort udvalg af komponenter. det som jeg finder mest interresant er aop ,dependency injection og support for jdo,hibernate,jdbc osv og spring er nemt at lære... og det gør brugen af hibernate osv meget nemmere.
en combo som (jsf/tapestry)+spring+hibernate ville jeg selv kigge på.
men det er en klar fordel at du kender struts så i dit tilfælde ville jeg nok holde mig til det jeg kender... min hovedopgave for et 1/2 år siden bestod i en webapplication hvor mig og en anden skulle lære hibernate/jsf/spring/aop rimlig godt og samtidigt evaluere EJB, struts, ad-hoc frameworks, jdo og det er en rimlig stor opgave på samme tid... ihvertfald hvis man også skal skrive en rapport om det ;)
der findes meget andet.... et af de buzzwords der er oppe for tiden er AJAX som ikke er en bestemt teknologi men noget du kan bruge for at lave nogen nice funktioner som f.eks google suggest har. grundlæggende er det bare noget javascript,XMLHttpRequest og lidt xml osv. (se
http://www.omnytex.com/articles/xhrstruts/ ).