JSF Controller, Service und DAO

Ich versuche mich daran zu gewöhnen, wie JSF im Hinblick auf den Zugriff auf Daten funktioniert (von einem Frühlingshintergrund)

Ich erstelle ein einfaches Beispiel, das eine Liste von Benutzern enthält. Ich habe so etwas wie

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

Dann hat der "Controller" so etwas wie

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

    private List<User> userList;

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

Und der "Dienst" (obwohl es eher wie ein DAO zu sein scheint) hat

public class UserListService {

    @PersistenceContext
    private EntityManager em;

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

Ist das die richtige Art, Dinge zu tun? Ist meine Terminologie richtig? Der "Service" fühlt sich eher wie ein DAO an? Und der Controller hat das Gefühl, dass er einen Teil der Arbeit des Dienstes erledigt.