If you are building an app from scratch, I would recommend using Hibernate for O/R mapping, Spring for MVC and Tapestry for display. Struts is in itself an MVC framework, so I am not sure how much you gain by using it along with Spring. I know people do use them both, but generally it is when they already have an application built in Struts and simply want to leverage some of the better attirbutes of Spring but cannot afford a full switch to a new framework.