Spring Design Design Patterns и SSR против REST API получил несколько вопросов - PullRequest
0 голосов
/ 25 января 2020

Я хотел бы задать несколько вопросов о создании приложений с весенней загрузкой 2. Через несколько месяцев go я решил начать создавать базовое c блог-приложение с весенней загрузкой и angular, я сделал несколько сущности, остальные контроллеры для пользователей, роли, статьи, категории и комментарии, создали сервис и реализацию сервиса для каждого, например, мой UserServiceImpl выглядел так, используя HQL, а не репозитории.

@Override
    public List<User> getUsers() {
        Query q = entityManager.createQuery("select u from User u");
        List<User> users = q.getResultList();

        if(users == null){
            users = new ArrayList<>();
        }

        return users;
    }

Это право способ сделать это? Нужно ли мне строить его так, потому что я не использовал репозитории и каждый проект Spring-boot-Best-Practices, который я видел, использовал репозитории вместо HQL, и я не совсем уверен, должен ли я использовать репозитории или пользовательские сервисы с HQL. Я полностью потерян с этим. Это мой первый вопрос.

Второй вопрос: должен ли я использовать рендеринг на стороне сервера и api или мне следует использовать только api без рендеринга на стороне сервера, потому что я видел несколько проектов, сделанных с ssr и остальные API, которые меня сильно смутили.

Спасибо за предоставленную помощь

1 Ответ

1 голос
/ 25 января 2020

Ответ 1 :

Существует 3 популярных репозитория CRUDRepository, PagingAndSortingRepository и JpaRepository.

  1. JpaRepository - это слой абстракции от Spring Jpa в EntityManager
  2. То, что вы используете, это HQL с EntityManager. Вы можете использовать HQL в EntityManager и JPQL в JpaRepository.
  3. Используя JpaRepository ваш код становится просто таким:

    Список пользователей = userRepository.findAll (); возвращение пользователей;

  4. Вы можете добиться того же, используя JPQL, чего можно добиться с помощью EntityManager, используя аннотацию @Query.

  5. Важно это зависит от команды, в которую вы будете входить, и над чем они работают. В основном в корпоративном мире команды используют старые технологии, в основном по следующим причинам

    • Они стабильны
    • Документация / Помощь для более старых технологий их много (более старые не означают JDB C и c. это означают относительно старые выпуски / технологии)
    • Большинство приложений будут совместимы с ними

Так что, ЛУЧШАЯ ПРАКТИКА использовать репозитории - на мой взгляд!

Ответ 2 :

  1. Преимущество рендеринга на стороне сервера состоит в том, что на сервере вы используете больше ресурсов, благодаря которым вы можете быстрее обработать ответ.
    • Браузеры / клиентские устройства могут быть недостаточно быстрыми, и им требуется относительно больше времени для преобразования вашего JSON / XML.
    • Когда вы получаете ответ от самого сервера, JS Engine просто должны отображать и не беспокоиться о преобразовании JSON в HTML / CSS и визуализации на устройстве cliend.
...