Контроллер JSF, Сервис и DAO

Я пытаюсь привыкнуть к тому, как JSF работает в отношении доступа к данным (из весеннего фона)

Я создаю простой пример, который ведет список пользователей, у меня есть что-то вроде

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

Тогда у «контроллера» есть что-то вроде

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

    private List<User> userList;

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

И «служба» (хотя это больше похоже на DAO) имеет

public class UserListService {

    @PersistenceContext
    private EntityManager em;

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

Это правильный способ делать вещи? Правильна ли моя терминология? «Сервис» больше напоминает DAO? И контроллер чувствует, что он выполняет часть работы сервиса.

Ответы на вопрос(2)

Ваш ответ на вопрос