The term "session" in
JEE is normally reserved for a very specific meaning, and in that context, JSF and non-JSF are mostly the same, although JSF has made me use more session objects than I would have because it wants to be able to navigate more freely, and the only longer-term memory a JEE appserver has outside of actual persistent store is application and session scope objects.
I think you're more referring to state. In JSF, state can be maintained client-side or server-side. You select which in the web.xml.
Client-side removes the need for server-side storage by distributing state amongst the clients. However, you pay for it because the state is sent back and forth to the server as part of the conversation. It's also more susceptible to security issues.
Server-side gets rid of a lot of the network and serialization overhead, but the cost there is that it requires more server-side storage.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.