- JSF - Java Server Faces -> Web User Interface
- EJB - Enterprise Java Beans -> Components which are stateful (session oriented) or stateless (services), message driven (asynchronous)
- Hibernate - Persistence Service like other JPA implementations (Eclipselink,OpenJPA or Toplink)
- Spring is another world without EJBs, which is able to integrate other view technologies. It's quite flexible.
You have to decide between JEE5/6 and spring. Take the red or the blue pill don't use both.