Обновить
4
Михаил Тимошкин@timoshkin-m

Пользователь

Отправить сообщение

Как я уже отвечал выше, таких мест было достаточно много, и если все из них переписать через @Query(native=true), то это не сильно бы отличалось от того, что в итоге получилось.

Модель entitей на этом проекте особо не используется по назначению: в большинстве мест мы просто достаем записи из бд.

А хранить сгенереные классы в репозитории - это весьма опасный путь.

Этот минус нашего подхода я подсветил в статье. Мы на него согласились в угоду стабильности тестов и более быстрой сборки проекта.

у вас бы был один механизм работы с БД вместо двух

Так у нас и сейчас только один механизм работы с БД - jOOQ.

А с JOOQ вы по итогу не написали все эти же классы/интерфейсы?

Писали. В своем ответе я и написал «также», имея ввиду что это пришлось бы делать в обоих случаях.

  1. Да, такой вариант был. Однако таких мест было достаточно много, и если все из них переписать через @Query(native=true), то это не сильно бы отличалось от того, что в итоге получилось. К тому же большинство из них содержали джойны и доставали не все данные, и чтобы это нормально работало пришлось бы также писать много интерфейсов-проекций.

  2. В нашем случае из необходимых фичей были только кэши, поэтому мы их без труда прикрутили на уровне сервиса. Работа с транзакциями происходит через API , но у нас не было необходимости открывать транзакцию руками.

  3. Проделанная работа позволила значительно оптимизировать работу с БД, поэтому ее сложно назвать лишней. В добавок статья как раз о том, что нам это удалось сделать достаточно быстро, прикрутив кодогенерацию - оставалось только переписать запросы, что затратило бы столько же времени, как если бы делали через @Query

Спасибо за уточнение, поправил!

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Системный инженер
Ведущий
Java
Java Spring Framework
Spring Boot
SQL
REST
Базы данных
Алгоритмы и структуры данных
Разработка программного обеспечения
Оптимизация кода
Многопоточность