Controlador JSF, Serviço e DAO

Estou tentando me acostumar com o funcionamento do JSF no que diz respeito ao acesso a dados (provenientes de um plano de fundo da primavera)

Estou criando um exemplo simples que mantém uma lista de usuários, tenho algo como

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

Então o "controlador" tem 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;
    }
}

E o "serviço" (embora pareça mais com um DAO) tem

public class UserListService {

    @PersistenceContext
    private EntityManager em;

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

Essa é a maneira correta de fazer as coisas? Minha terminologia está correta? O "serviço" parece mais um DAO? E o controlador parece que está fazendo parte do serviço.

questionAnswers(2)

yourAnswerToTheQuestion