Controlador JSF, Servicio y DAO

Estoy tratando de acostumbrarme a cómo funciona JSF con respecto al acceso a datos (proveniente de un fondo de primavera)

Estoy creando un ejemplo simple que mantiene una lista de usuarios, tengo algo como

<h:dataTable value="#{userListController.userList}" var="u">
    <h:column>#{u.userId}</h:column>
    <h:column>#{u.userName}</h:column>
</h:dataTable>

Entonces el "controlador" tiene algo como

@Named(value = "userListController")
@SessionScoped
public class UserListController {
    @EJB
    private UserListService userListService;

    private List<User> userList;

    public List<User> getUserList() {
        userList = userListService.getUsers();
        return userList;
    }
}

Y el "servicio" (aunque parece más un DAO) tiene

public class UserListService {

    @PersistenceContext
    private EntityManager em;

    public List<User> getUsers() {
        Query query = em.createQuery("SELECT u from User as u");
        return query.getResultList();
    }
}

¿Es esta la forma correcta de hacer las cosas? ¿Es correcta mi terminología? El "servicio" se siente más como un DAO? Y el controlador siente que está haciendo parte del trabajo del servicio.

Respuestas a la pregunta(2)

Su respuesta a la pregunta