zelleratumm

Untitled

Jul 9th, 2020
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.07 KB | None | 0 0
  1. Задание
  2.  
  3. В этом задании необходимо научиться связывать сущности с таблицами в базе данных, а также строить запросы на чтение/изменение данных. Шаблон приложение можно найти по ссылке на github.
  4. Основные требования
  5.  
  6. Дополните все сущности необходимыми аннотациями согласно схеме (shema.drawio)
  7. Дополните сущности аннотациями из Project Lombok
  8. Расширьте сервисы, построив 15 запросов (9 - на выборку данных, 6 - на модификацию)
  9. Если в запросе нет взаимодействия с несколькими таблицами, постарайтесь ограничиться построением запроса без аннотации @Query (используя подход Query from method name)
  10. Если запрос нельзя построить используя JPQL, попробуйте реализовать его с помощью nativeQuery
  11. Прибегайте к использованию нескольких запросов на один use case в крайних случаях
  12. Добейтесь того, чтобы приложение запускалось без ошибок и все тесты стали зелеными
  13.  
  14. Настройка
  15.  
  16. Для того, чтобы приложение и тесты успешно запустились вам необходимо:
  17.  
  18. скачать и установить PostgreS
  19. скачать и установить PgAdmin (так же можно пользоваться расширением Postgre SQL Explorer к VS Code)
  20. создать две базы данных: spring-data и spring-data-test
  21. скачать и установить плагин Lombok
  22.  
  23. Важно!
  24.  
  25. Для успешного выполнения задания вы можете опираться на список интеграционных тестов. Однако при оценивании работы мы так же будем учитывать и качество самих запросов.
  26. В шаблоне вы найдете несколько подсказок по реализации методов.
  27. Большинство операций можно реализовать разными способами. Выбирайте тот, который является наиболее эффективным (меньше обращений к базе данных, меньше кода).
  28. Менять логику тестов нельзя. Добавлять можно абсолютно любой код, до тех пор, пока он соответствует контракту тестов.
  29.  
  30. Описание запросов
  31.  
  32. Поиск пользователей по фамилии
  33.  
  34. описать поиск (операция like) по фамилии, добавить паджинацию, сортировку по фамилии по возрастанию. Запрос должен быть регистронезависимым
  35.  
  36. Поиск пользователей по городу
  37.  
  38. описать поиск по городу используя таблицу offices. Сортировать пользователей по фамилии по возрастанию
  39.  
  40. Поиск самых развивающихся проектов по технологии
  41.  
  42. описать поиск первых 5 проектов, которые используют технологию. Сортировать пользователей по количеству человек на проекте
  43.  
  44. Поиск опытных пользователей
  45.  
  46. описать поиск пользователей, у которых опыт >= указанного. Сортировать пользователей по опыту по убыванию
  47.  
  48. Поиск пользователей по расположению
  49.  
  50. описать поиск по комнате и городу используя таблицы teams и offices. Сортировать пользователей по фамилии по возрастанию
  51.  
  52. Поиск самого крупного проекта
  53.  
  54. описать поиск проекта, в котором больше всего команд. Если команд одинаковое количество, то выбрать проект, в котором больше всего разработчиков. Если разработчиков тоже одинаковое количество, то сортировать проекты по имени по убыванию и взять первый
  55.  
  56. Выборка общей информации по проектам
  57.  
  58. выбрать следующие данные о проекте: название, количество команд, количество разработчиков, список технологий (через запятую). Сортировать данные по имени проекта по возрастанию. Т.к. превратить значения технологий в список, разделенный запятыми, довольно сложно стандартными средствами JPQL, можно использовать nativeQuery и проекцию данных на интерфейс ProjectSummaryDto. Если построить запрос таким образом не получится, то можно использовать любой другой способ, который соответствует тестам.
  59.  
  60. Количество проектов с ролью
  61.  
  62. описать подсчет проектов, в которых есть разработчики, которые занимают определенную роль
  63.  
  64. Поиск офисов, которые занимаются технологией
  65.  
  66. описать поиск офисов, в которых есть проекты, которые используют определенную технологию.
  67.  
  68. Создание нового проект
  69.  
  70. описать логику создания проекта, технологии и команды для проекта. Можно использовать стандартные методы JpaRepository
  71.  
  72. Обновление существующей команды
  73.  
  74. описать логику обновления технологии у команды, в которой участников < определенного количества. Можно использовать несколько запросов
  75.  
  76. Обновление существующего офиса
  77.  
  78. описать логику обновления адреса у офиса, если разработчики этого офиса участвуют в проекте
  79.  
  80. Обновление существующей команды
  81.  
  82. описать один запрос, который будет добавлять к имени указанной команды название проекта и название технологии (Team_Project_Technology). Необходимо использовать nativeQuery
  83.  
  84. Удаление пользователей
  85.  
  86. описать один запрос, который будет удалять пользователей, у которых опыт < указанного количества лет
  87.  
  88. Удаление ролей
  89.  
  90. описать один запрос, который будет удалять все роли по имени, если они не привязаны к пользователям
Advertisement
Add Comment
Please, Sign In to add comment