"MVC" has several JSF perspectives. From a high-level perspective, the Model is represented by EJB / JPA and, ultimately, DAO / DTO (if any). The view is represented by your own JSF code (which contains beans and Facelets managed templates). The controller is represented by FacesServlet .
From a low-level view (a further subdivision of a high-level view), the model is represented by objects or DTOs. The view is represented by your Facelets templates. The controller is represented by your managed bean. This is basically M (MVC) C.
Note that “POJO” is a fairly inherited term from the old J2EE / Hibernate. Currently, with Java EE / JPA, they are called "entities." Yes, those are javaabeans. Als notes that some may prefer to use regular DTO vanilla instead of entities that should separate your JSF code from the service level. Then the JSF should use these DTOs as a model, and the service level should, in turn, display data between these DTOs and real objects. This, in my opinion, is not necessary. EJB3 / JPA2 is a fairly smooth API that already minimizes many code templates for which you would use DAO / DTO, for example, as in the old days of J2EE. With Java EE 6 and above, there is no need to switch from a service level, such as Spring. Everything is already well thought out and standardized.
See also:
source share