Hi! Well, I work in an mid size project, approx 3000 java files and 300 jsps. No need for load balancing or failover, which makes things easier ;-)
We moved (or currently move) from our own persistence to hibernate with all its problems (Lazy loading, detached objects, ...) Exceptions all around ;-) Then, I developed the ConversationTag which you'll find in tomahawk sandbox which introduce a new scope to JSF - the conversation scope. Every hibernate object now lives in this conversation scope which is synchronized with the hibernate session and can span multiple requests and pages. JBoss Seam do alot more, but the main live-saver (IMHO) is its conversation scope which we have with our tag too. Some people do not like it do define such things in the view, so the latest addition is a custom scope for Spring which allows you to more naturally deal with conversation beans, you simply have to write scope=conversation in your spring bean configuration. Some thoughts have to be done how to synchronize such a scope with hibernate - well, I've done something there too, but I am still not fully happy with it. Ciao, Mario