Skip to content

Commit cac6ec6

Browse files
authored
Update graduation.md
1 parent 8224d02 commit cac6ec6

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

graduation.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ _Антуан де Сент-Экзюпери_
9797
### 6: Доступ к БД
9898

9999
- 6.1: Используйте Spring Data JPA (без лишней делегации). Методы Repository можно вызывать напрямую из сервиса или из контроллера.
100-
- 6.2: Если приложению в объекте требуется только его id, используйте reference (`getById`)
100+
- 6.2: Если приложению в объекте требуется только его id, используйте reference (`getReferenceById`)
101101
- 6.3: В DATA-JPA 2.x используются `Optional`. Попробуйте работать с ними, это безопасный способ работать с null-значениями (используйте `orElseThrow`)
102102
- 6.4: Не делайте при обновлении записи ради экономии пары строчек кода так:
103103
```
@@ -114,16 +114,15 @@ repository.save(entity)
114114
- 7.2: Тщательно считайте количество обращений в базу на каждый запрос. Особенно при запросах от юзеров, которых очень много! Также на сложность запросов от них, чтобы не положить базу
115115
- 7.3: Сделайте [индексы к таблицам](https://ru.wikipedia.org/wiki/Индекс_(базы_данных)). Попробуйте обеспечить UNIQUE (один голос пользователя в день, один уникальный пункт меню в день).
116116
Следите за **порядком полей в индексе**, от этого зависит индексирование запросов.
117-
- 7.4: При популировании добавь записи за сегодняшний день - `now()`, чтобы всегда были актуальные исходные данные
117+
- 7.4: При популировании добавь записи за сегодняшний день - `now()`, чтобы всегда были актуальные исходные данные
118118
- 7.5: Поля базы case insensitive, не пишите camelStyle (для которых нужны кавычки)
119119
- 7.6: Таблицы обычно именуются в единственном числе. Исключение - `users`, `orders` и другие зарезервированные слова
120120
- 7.7: `date`/`timestamp` - зарезервированное слово, лучше избегать их при именовании полей
121121

122122
### 8: Security
123123

124-
- 8.1: Проверьте, станет ли код проще с `@AuthenticationPrincipal` (урок 11, Доступ к AuthorizedUser).
124+
- 8.1: Проверьте, станет ли код проще с `@AuthenticationPrincipal` (урок 11, доступ к AuthorizedUser).
125125
- 8.2: Я предпочитаю четкое разделение ролей на основе URL. Для админа URL содержит `/admin`
126-
- 8.3: Еще раз - призываю не менять код TopJava
127126

128127
### 9: Кэширование
129128

@@ -133,8 +132,8 @@ repository.save(entity)
133132

134133
### 10: Валидация
135134

136-
- 10.1: Одних аннотаций валидации недостаточно. Должны быть `@Valid/@Validation`
137-
- 10.2: Проверяйте входные данные при `create/update` в контроллерах! В TopJava это `ValidationUtil.checkNew()/assureIdConsistent()`
135+
- 10.1: Одних аннотаций валидации на полях недостаточно. Должны быть `@Valid/@Validation` в контроллере
136+
- 10.2: Прячте `id` при `create/update` в примерах Swagger. Если их передали - проверяйте на соответствие (в TopJava это `ValidationUtil.checkNew()/assureIdConsistent()`)
138137

139138
### 11: Дополнительно
140139

@@ -145,7 +144,7 @@ repository.save(entity)
145144

146145
- 12.1: Поместите вначале `readme` ТЗ или **ссылку на него** - будет понятно о чем твой проект
147146
- 12.2: Если задание на English, описание пиши также на English (то же самое относится к языку резюме: вакансия на English предполагает резюме на English)
148-
- 12.3: Требуемые примеры `curl` не прячьте, а пишите здесь! Оптимально здесь должна быть ссылка на `Swagger UI` с креденшелами для выполнения запросов
147+
- 12.3: Требуемые примеры `curl` не прячьте, а пишите здесь! Оптимально сделать **ссылку на `Swagger UI` с креденшелами для выполнения запросов**
149148
- 12.4: Проверяют люди с опытом в Java: не надо писать инструкций, как устанавливать Java и Maven
150149

151150
### 13: Git

0 commit comments

Comments
 (0)